掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メニューに子フォームの一覧を作成するには (ID:14161)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
このようなかんじでしょうか? Form1のButton1をクリックする度に子フォームを作成し、メニューを追加します。 メニューを選択すると、対応する子フォームがアクティブになります。 //親フォーム type TForm1 = class(TForm) Button1: TButton; MainMenu1: TMainMenu; WindowMenu: TMenuItem; procedure Button1Click(Sender: TObject); // 省略 procedure TForm1.Button1Click(Sender: TObject); var Frm2: TForm2; begin Frm2 := TForm2.Create(Self); try Frm2.Show; except Frm2.Free; end; end; //子フォーム type TForm2 = class(TForm) procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private FMItem: TMenuItem; procedure CustomMenuItemClick(Sender: TObject); // 省略 procedure TForm2.FormCreate(Sender: TObject); begin Self.Caption := '子フォーム' + IntToStr(Form1.MDIChildCount); FMItem := TMenuItem.Create(Form1); FMItem.Caption := Self.Caption; FMItem.OnClick := CustomMenuItemClick; Form1.WindowMenu.Add(FMItem); end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TForm2.FormDestroy(Sender: TObject); begin try Form1.WindowMenu.Delete(Form1.WindowMenu.IndexOf(FMItem)); FMItem.Free; except end; end; procedure TForm2.CustomMenuItemClick(Sender: TObject); begin SendMessage(Form1.ClientHandle, WM_MDIACTIVATE, Self.Handle, 0); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.