Autor Beitrag
greyhound
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Sa 25.10.03 17:50 
Hi Leute,

ich erzeuge mehrere TMenuItems zur Laufzeit

mit
ausblenden 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:
ausblenden 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.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
if(Sender is TMenuItem) then
  ShowMessage((Sender as TMenuItem).Caption);

Gut, was? :mrgreen:
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Sa 25.10.03 18:12 
ruf doch bei onclick deine eigene routine auf:

ausblenden 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Showcaption(SelObject:integer):string
begin 
result:=DynItem[SelObject].Caption; 
end;

_________________
Patrick
im zweifelsfall immer das richtige tun!!!