![]() |
Auslösendes Control rausfinden bei TAction
Hi,
man, ich roste echt ein. Man nehme: Zwei Controls, ein Popumenu, eine ActionList. Man definiere eine Action und ein PopupmenuItem. Man hänge die Action an das Menuitem und man hänge das PopupMenu an beide Controls. In der Action.onExecute ist der Sender immer die auslösende TAction. Auf der Action gibt es ActionControl. Das ist blöderweise das MenuItem. Wie finde ich jetzt heraus, von welchem Control aus der Menüeintrag gewählt wurde? AUSSER in 'onPopup' das Control in eine temporäre Variable zu packen, das kann jeder und das ist unschön. |
Re: Auslösendes Control rausfinden bei TAction
Hallo Sebastian,
Delphi-Quellcode:
Das wäre eine weitere Möglichkeit. Aber selbst mit den notwendigen Sicherheitsabfragen ist sie nicht viel schöner als deine Lösung.
procedure TForm1.Action1Execute (Sender: TObject);
var mi : TMenuItem; pm : TPopupMenu; begin mi := TAction(Sender).ActionComponent as TMenuItem; pm := mi.GetParentMenu as TPopupMenu; ShowMessage (pm.PopupComponent.Name); end; Gruß Hawkeye |
Re: Auslösendes Control rausfinden bei TAction
Hi,
bist du sicher, dass Sender wirklich das Control enthält? Ich meine mich daran zu erinnern, dass im Sender nur die TAction-Instanz drin steht von der Aktion, die du gerade aufrufst. Chris |
Re: Auslösendes Control rausfinden bei TAction
boah :shock:
Delphi-Quellcode:
Da wird man ja verrückt. Aber es geht. Und es ist sauberer als Zwischenspeichern.
((((Sender as TAction).ActionComponent as TMenuItem).Owner as TPopupMenu).PopupComponent as TControl)
|
Re: Auslösendes Control rausfinden bei TAction
Der Owner sollte in der Regel das Formular sein, nimm deshalb besser GetParentMenu statt Owner.
Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 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