お知らせ

電子会議

ライブラリ

FDelphi サイト全文検索

Delphi FAQ一覧

サンプル蔵



FDelphi FAQ
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」

[Q]
ポップアップメニューの項目を動的に生成する方法を教えてください。 また、生成したメニューにクリックイベントを関連づけるのは どのようにすればよいのでしょうか。

[A]
TMenuItem を Create して、MenuItem もしくは PopupMenu.Items
 に Add または Insert します。

例えば、次のようにします。
ポップアップメニューに Menu1 という項目があって
そのサブメニューとしてつくるには、次のようにします。

procedure TForm1.NewItemCreate;
var
  NewItem: TMenuItem;
begin
  NewItem := TMenuItem.Create(Self);
  NewItem.Caption := '新規メニュー';    //Captionを入れる
  NewItem.onClick : = NewItemClick;
                                 //クリック時のイベントハンドラを関連づける
  Menu1.Insert(0, NewItem);   //動的生成したものをメニューのいちばん上に挿入
end;

ポップアップメニュー自体に挿入するときは

 PopupMenu1.Items.Insert(0, NewItem); //一番上に追加する場合
  PopupMenu1.Items.Add(NewItem);       //一番下に追加する場合

という風にしてやります。


クリック時のイベントハンドラ内では、(Sender as TMenuItem)を
使うことでクリックされたメニュー項目がわかるので、イベントを
共有することができます。
次の例はクリックされたメニューのチェックマークを反転します。

procedure TForm1.NewItemClick(Sender: TObject);
begin
  with (Sender as TMenuItem) do Checked := not Checked;
end;


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。

Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会