![]() |
Popoupmenu zur Laufzeit erstellen
Hallo,
ich erstelle so ein Popupmenu zur Laufzeit (bzw. die Inhalte des Menüs)
Delphi-Quellcode:
Das Funktioniert auch alles recht gut, allerdings möchte ich es jetzt so machen, dass beim KLICK auf die einzelnen Menüpunkte immer EINE procedure aufgerufen wird.
tmi := tmenuitem.Create(self);
[..] tmi.Caption := listbox1.Items[i]; popupmenu1.Items.Add(tmi); Diese Prozedur sieht wie folgt aus:
Delphi-Quellcode:
Der String der der Prozedur übermittelt wird, soll gleichzeitig das (oder die?) Caption des Menüpunktes sein.
procedure oeffnen(s:string);
Also: Wie kann ich beim erstellen der Menüpunkte klarmachen, dass er immer diese Prozedur mit dem entsprechenen String aufrufen soll? Ich hoffe ihr versteht was ich meine. Vielen Dank im voraus |
Re: Popoupmenu zur Laufzeit erstellen
Spricht etwas gegen:
Delphi-Quellcode:
oder:
popupmenu1.Items.OnClick := oeffnen(listbox1.Items[i]);
Delphi-Quellcode:
tmi.OnClick := oeffnen(listbox1.Items[i]);
|
Re: Popoupmenu zur Laufzeit erstellen
@Yadon: dagegen spricht das dies nicht möglich ist.
Möglich wäre nur das man jedem Item die gleiche Procedure zuweist (vom typ TNotifyEvent) und dann anhand des senders die caption ausliest.
Delphi-Quellcode:
[...]
tmi := tmenuitem.Create(self); [..] tmi.Caption := listbox1.Items[i]; tmi.OnClick := ItemClick; //<== hier das OnClick zuweisen popupmenu1.Items.Add(tmi); [...] procedure TForm1.ItemClick(Sender: TObject); begin if Sender is TMenuItem then showmessage(TMenuItem(Sender).Caption); //anstelle von Showmessage kannst du natürlich auch was anderes aufrufen - zum beispiel deine funktion die den string erwartet. end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz