動的にメニューを追加・削除するサンプルです。
AddMenuボタンを押すとメニューが追加され、AddMenuItemボタンを押すと最後に追加されたメニューにメニュー項目が追加されます。
Remove〜で始まるボタンは対応するAdd〜ボタンで追加された最後のメニュー(メニュー項目)を削除します。
//---------------------------------------------------------------------------
// Unit1.h
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE 管理のコンポーネント
TButton *Button1;
TButton *Button2;
TMainMenu *MainMenu1;
TButton *Button3;
TButton *Button4;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
private:
void __fastcall UserMenuClick(TObject * Sender); // ユーザー宣言
public: // ユーザー宣言
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
// Unit1.cpp
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm1::UserMenuClick(TObject * Sender)
{
Application->MessageBox(((TMenuItem*)Sender)->Caption.c_str(),"AddMenu",MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//メニューの追加
TMenuItem *NewItem = new TMenuItem(MainMenu1);
NewItem->Caption = "新メニュー"+IntToStr(MainMenu1->Items->Count);
NewItem->OnClick = UserMenuClick;
MainMenu1->Items->Insert(MainMenu1->Items->Count,NewItem);//最後のメニューに追加
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//メニューの削除
if (MainMenu1->Items->Count > 0){
MainMenu1->Items->Delete(MainMenu1->Items->Count-1); //最後のメニューを削除
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//メニューの項目の追加
TMenuItem *ToItem;
TMenuItem *NewItem;
if (MainMenu1->Items->Count > 0){
ToItem = MainMenu1->Items->Items[MainMenu1->Items->Count-1];
NewItem = new TMenuItem(ToItem);
NewItem->Caption = "新メニュー項目"+IntToStr(ToItem->Count);
NewItem->OnClick = UserMenuClick;
ToItem->OnClick = NULL;
ToItem->Insert(ToItem->Count,NewItem); //最後のメニュー項目に追加
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
//メニュー項目の削除
TMenuItem *ToItem;
if (MainMenu1->Items->Count > 0){
ToItem = MainMenu1->Items->Items[MainMenu1->Items->Count-1];
if (ToItem->Count > 0){
ToItem->Delete(ToItem->Count-1); //最後のメニュー項目を削除
}
}
}
DownLoad bcbtips031.lzh 4KB(BCB5)