Geht so:
Delphi-Quellcode:
//
// Klick-Ereignis für dynamische Popmenüeinträge
//
procedure TForm1.PopUpItemClick(Sender: TObject);
var
PopItem: TMenuItem;
begin
// Sicherstellen dass der Sender vom richtigen Typ ist
PopItem := (Sender as TMenuItem);
// nur wenn Zuwesusng erfolgreich
if Assigned(PopItem) then
begin
ShowMessage(Format('Popupmenüitem Nr. %d wurde angeklickt', [PopItem.Tag]));
end;
end;
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
PopItem: TMenuItem;
LBItem: TMenuItem;
i: Integer;
begin
PopItem := TMenuItem.Create(Form1); // Hauptmenüeintrag erzeugen
PopItem.Caption := 'Litsbox Items'; // Beschriftung
PopupMenu1.Items.Add(PopItem); // an Popupmenü anhängen
for i := 0 to ListBox1.Items.Count - 1 do
begin
LBItem := TMenuItem.Create(Form1); // Menüitem erzeugen
LBItem.Caption := Listbox1.Items[i]; // Beschriftung
LBItem.Tag := i; // Eigenschaft Tag setzen zur späteren Unterscheidung im OnClick Ereignis
LBItem.OnClick := PopUpItemClick; // Klick-Ereignis zuweisen
PopItem.Add(LBItem); // an Hauptmenüeintrag anhängen
end;
end;
Ich habe es ausführlich kommentiert. Sollte so verständlich sein.