AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Auslösendes Control rausfinden bei TAction

Offene Frage von "Phoenix"
Ein Thema von Phoenix · begonnen am 19. Jul 2007 · letzter Beitrag vom 19. Jul 2007
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#1

Auslösendes Control rausfinden bei TAction

  Alt 19. Jul 2007, 17:07
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Auslösendes Control rausfinden bei TAction

  Alt 19. Jul 2007, 17:40
Hallo Sebastian,

Delphi-Quellcode:
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;
Das wäre eine weitere Möglichkeit. Aber selbst mit den notwendigen Sicherheitsabfragen ist sie nicht viel schöner als deine Lösung.

Gruß Hawkeye
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Auslösendes Control rausfinden bei TAction

  Alt 19. Jul 2007, 17:42
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
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#4

Re: Auslösendes Control rausfinden bei TAction

  Alt 19. Jul 2007, 17:45
boah

((((Sender as TAction).ActionComponent as TMenuItem).Owner as TPopupMenu).PopupComponent as TControl) Da wird man ja verrückt. Aber es geht. Und es ist sauberer als Zwischenspeichern.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Auslösendes Control rausfinden bei TAction

  Alt 19. Jul 2007, 17:51
Der Owner sollte in der Regel das Formular sein, nimm deshalb besser GetParentMenu statt Owner.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz