Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Ereignisse von dynamisch erzeugten Menüs


Jojojoxx - Mi 29.08.07 00:08
Titel: Ereignisse von dynamisch erzeugten Menüs
Hallo!

Ich erzeuge in einem Programm während der Laufzeit Einträge eines Untermenüs (TMenuItem).
Wie kann ich das OnClick-Ereignis eines solch dynamisch erzeugten Eintrags abfangen, da ich es ja im Objektinspektor nicht auswählen kann.
Danke für die Hilfe!
mfg

Jojo


Christian S. - Mi 29.08.07 00:25

Einfach eine entsprechende Methode zuweisen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type
  TForm1 = class(TForm)
    procedure MyOnClick(Sender : TObject);
  end;

...

myMenuItem.OnClick := MyOnClick;

Ist ausm Kopf geschrieben, kann also fehlerhaft sein. Prinzip dürfte passen


Jojojoxx - Mi 29.08.07 01:49

Hi!

Dann erhalte ich den fehler "Ungenügende Forward- oder External-Deklaration".
mfg

Jojo


Christian S. - Mi 29.08.07 01:53

Du musst MyOnClick schon noch implementieren ...


Jojojoxx - Mi 29.08.07 01:55

Hi!

Habs grad hinbekommen, vielen Dank für deine Hilfe!
mfg

Jojo


Jojojoxx - Mi 29.08.07 02:02

Hi!

Jetzt hab ich ein anderes Problem. Mit Sender wird ja das Objekt übergeben (in meinem Falle also ein TMenuItem).
Aber ich kann wenn ich "Sender." eingebe, nicht die TMenuItem-spezifischen Punkte finden wie Caption usw...
Wie kann ich daran kommen?
Danke!
mfg

Jojo


Christian S. - Mi 29.08.07 02:10

Da der Parameter Sender vom Typ TObject ist, musst Du ihn in ein TMenuItem casten:

Delphi-Quelltext
1:
TMenuItem(Sender).Caption                    


Jojojoxx - Mi 29.08.07 02:11

Super, klappt! :)
Vielen Dank für deine Hilfe zu noch so später (oder eher früher) Stunde :)
mfg

Jojo