Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - für dynamisch erzeugte Menüeinträge per onClick reagieren


greyhound - Sa 25.10.03 17:50
Titel: für dynamisch erzeugte Menüeinträge per onClick reagieren
Hi Leute,

ich erzeuge mehrere TMenuItems zur Laufzeit

mit

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i:=0 to x do begin
DynItem[i]:=TMenuItem.create(self);
DynItem[i].Caption:=xy;
DynItem[i].OnClick:=MenuItemClick;
Popupmenu.add(DynItem[i]);
end;

dazu habe ich die Ereignisbehandlung MenuItemClick:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.MenuItemClick(Sender: TObject);
begin
[...]
end;

und in dieser Routine will ich nun an die Caption des Eintrages, der geklickt wurde.

Leider kann ich über die <sender>-Variable auf nichts nennenswertes zugreifen.

Danke für Hilfe im Voraus,

greyhound

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Delete - Sa 25.10.03 18:11

as ist das Zauberwort. Mit nur einem S, nicht dass du jetzt schimpfst, ich hätte ich Ar*** genannt. ;)

Also, wenn der Sender ein Menüitem ist, dann behandle ihn als solchen, und schon hast du Zugriff auf die Eigenschaften. Und jetzt das ganze noch mal in Code:

Delphi-Quelltext
1:
2:
if(Sender is TMenuItem) then
  ShowMessage((Sender as TMenuItem).Caption);

Gut, was? :mrgreen:


patrick - Sa 25.10.03 18:12

ruf doch bei onclick deine eigene routine auf:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i:=0 to x do begin 
DynItem[i]:=TMenuItem.create(self); 
DynItem[i].Caption:=xy; 
DynItem[i].OnClick:=Showcaption(i); //<--eigene routine
Popupmenu.add(DynItem[i]); 
end;


und so sieht deine routine aus:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Showcaption(SelObject:integer):string
begin 
result:=DynItem[SelObject].Caption; 
end;