Und wenn Du's nicht mit dem Tag-Feld machen willst, weil das bei vielen Funktionen zu Mammut-OnClick-Funktionen führt, geht's auch so (Form mit MainMenu und in MainMenu ein Hauptmenü Test und ein Untermenu Test1):
Delphi-Quellcode:
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Test1: TMenuItem;
Test11: TMenuItem;
procedure Test11Click(Sender: TObject);
private
{ Private-Deklarationen }
MenuItemStrings: TStringList;
procedure Test21Click(Sender: TObject);
procedure Test31Click(Sender: TObject);
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Test11Click(Sender: TObject);
var
mi: TMenuItem;
i: Integer;
begin
ShowMessage('Test1');
MenuItemStrings := TStringList.Create;
MenuItemStrings.Add('Item 1');
MenuItemStrings.Add('Item 2');
for i := 0 to MenuItemStrings.Count - 1 do
begin
mi := TMenuItem.Create(self);
mi.Caption := MenuItemStrings[i];
if i = 0 then
mi.OnClick := Test21Click
else
mi.OnClick := Test31Click;
Test1.Add(mi);
end;
end;
procedure TForm1.Test21Click(Sender: TObject);
begin
ShowMessage('Test21');
end;
procedure TForm1.Test31Click(Sender: TObject);
begin
ShowMessage('Test31');
end;
end.