Autor Beitrag
RichMan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20



BeitragVerfasst: Di 09.07.02 15:05 
Guden Leutz!

Schaut euch mal folgenden Quelltext an:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TfrmHaupt.OnButtonClick(Sender: TObject);
var
 Popup: String;
begin

 // Name des anzusprechenden Popup-Menüs generieren
 Popup := 'Popup'+IntToStr((Sender as TSpeedButton).Tag);
 
 // Popup-Menü bei x,y = 30,30 aufklappen
 (Popup as TPopupMenu).Popup(30,30);

end;

Leider funzt das so nicht. Also um es nochmal zu beschreiben: Ich habe einige Popup-Menüs und einige SpeedButtons auf der Form. Je nachdem welcher der Buttons angeklickt wird, soll ein Popup-Menü aufgeklappt werden. Der Name des aufzuklappenden Popup-Menüs richtet sich nach dem Tag des SpeedButtons und wird folglich auch daraus generiert ("Popup" + Tag des Speedbuttons = aufzuklappendes Menü). Wie realisiere ich nun, dass der String der in Popup steckt, als TPopupMenu-Name gesehn wird und somit mit der Anweisung Popup(x,y) aufgeklappt werden kann?

Gruß,
RichMan
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 09.07.02 15:11 
So geht es natürlich nicht... haste ja selbst festgestellt!

Mit der Funktion FindComponent hat man die Möglichkeit über den Namen die entspr. Komponente zu bekommen.

So müsste Dein Code dann aussehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TfrmHaupt.OnButtonClick(Sender: TObject);
var
  PopupName: String;
  Popup: tComponent;
begin
// Name des anzusprechenden Popup-Menüs generieren
PopupName := 'Popup'+IntToStr((Sender as TSpeedButton).Tag);

Popup := FindComponent (PopupName);

If Assign (Popup) Then
  // Popup-Menü bei x,y = 30,30 aufklappen
  (Popup as TPopupMenu).Popup(30,30);
end;


Gruß
TINO

PS: Den Code habe ich nicht getestet!