掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MDI子フォームへのアクセス方法 (ID:23923)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> MDIChildren[0] の[ ]内のIndexをChildFormの起動後、 > FormCreate(Sender: TObject); 内などで知る方法です。 例を示します。 親フォーム unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; NewChild1: TMenuItem; procedure NewChild1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} uses Unit2; procedure TForm1.NewChild1Click(Sender: TObject); begin TChildForm.Create(self); end; end. --------- 子フォーム unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TChildForm = class(TForm) procedure FormCreate(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var ChildForm: TChildForm; implementation {$R *.dfm} uses Unit1; procedure TChildForm.FormCreate(Sender: TObject); begin Caption := 'Child No.' + IntToStr(Form1.MDIChildCount); end; end. ------- このコードで、親フォームのメニュー項目 NewChild1Click() を実行するたびに Unit2 の子フォームが作られますが、現在何番目なのかは作成直後の Caption に 表示されます。 > 子フォームのFormCreate(Sender: TObject); で、 > Self.Captionを確認するとCaptionが変わっています。 これは当然ですね。 ChildForm := TChildForm.Create(Self); FormCreate() は、コンストラクタの実行中に呼ばれます。ですから ChildForm.Caption:='Child Form('+inttostr(Childcounter)+')'; これはまだ実行されていないのです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.