![]() |
TMenuItems zur Laufzeit erstellen und auf OnClick reagieren
Hallo,
ich möchte im Main-Menu meines Programms dynamisch MenuItems erzeugen. Das krieg ich auch hin indem ich mir ein MenuItem definiere und mit der Funktion Add hinzufüge. Im OnClick definiere ich eine Funktion die bei onClick ausgeführt wird. Das mache ich mit mehreren Items innerhalb einer Schleife so wie angedeutet : {alles in einer Schleife item:= TMenuItem.Create(self); item.caption:= 'beliebiger Text'; item.onClick:= ClickProcedure; menu.items.items[0].add(item); } ... aber wie kriege ich jetzt raus auf welches MenuItem geklickt wurde ? Ich kann in ClickProcedure jetzt Sachen ausführen, aber nicht abghängig vom geklickten Item ? wie macht man sowas ? Grüße jesus |
Re: TMenuItems zur Laufzeit erstellen und auf OnClick reagie
Die Click Methode die du zugewiesen hast, hat einen Parameter: Sender. Dieser enthält immer das TMenuItem, welches das Ereignis ausgelöst hat. Dies ist bei so gut wie allen Events so, damit man unterscheiden kann, welches Element das Ereignis ausgelöst hat.
|
Re: TMenuItems zur Laufzeit erstellen und auf OnClick reagie
Du könntest das Tag-Property setzen und für die unterschiedung verwenden.
|
Re: TMenuItems zur Laufzeit erstellen und auf OnClick reagie
an Sender hatte ich auch schon gedacht, aber ich krieg's nicht hin, den Items einen Namen zu geben ...
|
Re: TMenuItems zur Laufzeit erstellen und auf OnClick reagie
Das mit dem Namen ist nicht schwer:
Delphi-Quellcode:
Alternativ kannst du auch die Funktion NewItem() aus der Unit Menus verwenden. Besser als der Name ist aber ein tag value, wie Bernhard schreibt. Den kannst du dann im event handler recht einfach über ein case statement auswerten:
menuItem.Name := 'abc';
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.MenuItemClick(Sender: TObject);
begin with Sender as TMenuItem do case Tag of TAG_MI_DOTHIS: ; // dein code else ; // auch dein code end; end; |
Re: TMenuItems zur Laufzeit erstellen und auf OnClick reagie
Danke ... ich kannte den as-Operator noch nicht. Mit dem Tip hab ich's hinbekommen ....
jesus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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