|
|
||||
Tips > |
|||||
PopupMenu の Item をクリアして再設定 |
更新 : 2009/12/04 |
||||
|
|
||
解説: アプリケーション動作中、オプションの設定などで、メニューをカスタマイズしたい時があります。 他の場面でもメニューを動的に作成、削除したいケースはあるでしょう。 ここでは、PopupMenu から一度消したアイテムを再設定する方法をみていきます。 使用例: 以下は、PopupMenu からアイテムを削除して、再び設定し直す例です。 準備としては PopupMenu, Button 二つを適当に配置します。 PopupMenu には、TestItem(Caption="Test") を追加して、Form1 の PopupMenu プロパティ に PopupMenu1 を設定しておきます。 まず、TestItem のクリックで処理するイベントハンドラ TestClick を作成します(宣言を "Unit1.h" の private に追加しておいてください)。 これは "test" メッセージを表示するだけのイベントです。 このイベントを TestItem の OnClick に記述します。 Button1 をクリックすると、PopupMenu のアイテムが消え、Button2 の OnClick で再設定されます。 TMenuItem は親メニューが解放されるときに自動的に解放されますので、FormDestroy 等で解放しなくても大丈夫です。 実際には、もっと複雑なメニューを消したり、追加したりしますので、練習しておいてください。 //------------------------------------------------------------------- void __fastcall TForm1::TestClick(TObject *Sender) { ShowMessage("test"); } //------------------------------------------------------------------- void __fastcall TForm1::TestItemClick(TObject *Sender) { TestClick(Sender); } //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // 何かの都合でメニューを変えた場合(今回はアイテムを消す) PopupMenu1->Items->Delete(0); } //------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { // 再設定 TMenuItem *item = new TMenuItem(this); item->Caption = "Test"; item->OnClick = TestClick; PopupMenu1->Items->Add(item); } //------------------------------------------------------------------- |