// im *.h der Form:
private:
void __fastcall OnUserMenuClick(TObject *Sender);
.
.
.
// in *.cpp der Form:
// beim Klick auf Button1 wird das Menu im Hauptmenu erzeugt
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TMenuItem *NewItem = new TMenuItem(Application);
TStringList *ssMenuItems = new TStringList();
// instanz der inidatei erstellen (liegt im programmpfad)
TIniFile *iniDatei = new TIniFile(AnsiString(ExtractFilePath(Application->ExeName)) + "PROGRAMM.INI");
iniDatei->ReadSection("Default", ssMenuItems);
// hauptmenü-punkt erstellen
NewItem->Caption = "Default";
MainMenu1->Items->Add(NewItem);
for (int j = 0; j < ssMenuItems->Count; j++)
{
// untermenü-punkte erstellen
TMenuItem *NewSubItem = new TMenuItem(Application);
NewSubItem->Caption = ssMenuItems->Strings[j];
// OnClick-Methode für den Menüpunkt festlegen
// -> hier alle ein und die selbe Methode
NewSubItem->OnClick = OnUserMenuClick;
// untermenüpunkt dem hauptpunkt zuordnen
NewItem->Add(NewSubItem);
}
// müssen bei programmende freigegeben werden,
// da sonst das menü sofort wieder verschwindet
// oder übernimmt die Anwendung die Freigabe??
// delete NewItem;
delete ssMenuItems;
delete iniDatei;
}
void __fastcall TForm1::OnUserMenuClick(TObject *Sender)
{
// caption des geklickten Menüpunktes anzeigen
ShowMessage(dynamic_cast <TMenuItem*-> (Sender)->Caption);
}