Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Menü zur Laufzeit erstellen (https://www.delphipraxis.net/68510-menue-zur-laufzeit-erstellen.html)

Ca3dEsnox 30. Apr 2006 19:46


Menü zur Laufzeit erstellen
 
Tach,
ich hab folgendes Problem: In einem Programm an dem ich arbeite werden zur Laufzeit neue Menüpunkte erzeugt. Wie fange kann ich ein OnClick Ereignis bei diesen Menüpunkten abfangen?

mkinzler 30. Apr 2006 19:54

Re: Menü zur Laufzeit erstellen
 
Heinfach nach erzeugen die Event-Properties setzten.

c113plpbr 30. Apr 2006 20:11

Re: Menü zur Laufzeit erstellen
 
Zitat:

Zitat von mkinzler
Heinfach nach erzeugen die Event-Properties setzten.

dabei wird es nur ein kleines problem geben:
wenn man das tut, über die einzig mir bekannte methode:
Delphi-Quellcode:
  @menuitem.OnClick := @MenuItemClick;
Bekommt man leider keinen Sender mitgeliefert. Also müsste er für jedes MenuItem eine eigene Procedure anlegen -> schlecht ... aber dazu, wie man das "richtig" realisiert fällt mir leider grad nix ein ... ^^

ciao, Philipp

mkinzler 30. Apr 2006 20:18

Re: Menü zur Laufzeit erstellen
 
Warum
Zitat:

@menuitem.OnClick := @MenuItemClick;
Ich würde es so machen:

Delphi-Quellcode:
form.menuclick( sender: TObject);
begin

end;

menuitem.onClick = menuclick;

c113plpbr 30. Apr 2006 20:23

Re: Menü zur Laufzeit erstellen
 
Zitat:

Zitat von mkinzler
Ich würde es so machen

oops ... das hab ich vergessen ;) (also das ganze in der form-klasse zu reggen)

ciao, Philipp

mkinzler 30. Apr 2006 20:31

Re: Menü zur Laufzeit erstellen
 
Habs ausprobiert. Funktioniert!

Ca3dEsnox 30. Apr 2006 20:45

Re: Menü zur Laufzeit erstellen
 
Jo funktioniert. danke.
Aber wenn ich mehrere Menuitems erstelle, die dann die gleiche prozedur aufrufen, woher weiß ich denn auf welchen eintrag geklickt wurde, um darauf reagieren zu können?

Hawkeye219 30. Apr 2006 23:34

Re: Menü zur Laufzeit erstellen
 
Der wird dir doch als Sender übergeben:

Delphi-Quellcode:
procedure TForm1.MenuClick (Sender: TObject);
begin
  ShowMessage ((Sender as TMenuItem).Caption);
end;
Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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