Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Popoupmenu zur Laufzeit erstellen (https://www.delphipraxis.net/43485-popoupmenu-zur-laufzeit-erstellen.html)

Nicolai1234 4. Apr 2005 20:13


Popoupmenu zur Laufzeit erstellen
 
Hallo,
ich erstelle so ein Popupmenu zur Laufzeit (bzw. die Inhalte des Menüs)
Delphi-Quellcode:
tmi := tmenuitem.Create(self);
[..]
tmi.Caption := listbox1.Items[i];
popupmenu1.Items.Add(tmi);
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.

Diese Prozedur sieht wie folgt aus:
Delphi-Quellcode:
procedure oeffnen(s:string);
Der String der der Prozedur übermittelt wird, soll gleichzeitig das (oder die?) Caption des Menüpunktes sein.

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

Yadon 4. Apr 2005 20:53

Re: Popoupmenu zur Laufzeit erstellen
 
Spricht etwas gegen:
Delphi-Quellcode:
popupmenu1.Items.OnClick := oeffnen(listbox1.Items[i]);
oder:
Delphi-Quellcode:
tmi.OnClick := oeffnen(listbox1.Items[i]);

SirThornberry 4. Apr 2005 20:59

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 07:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz