![]() |
Auslöser einer Action feststellen will nicht so recht
Hi!
Guckt euch mal bitte diesen Code an:
Delphi-Quellcode:
Die Action wird entweder durch einen Button oder eine MenuItem eines PopUpMenüs ausgelöst.
procedure TMainForm.AddFolderActionUpdate(Sender: TObject);
begin if (Sender as TAction).ActionComponent is TMenuItem then //das hier klappt nicht (Sender as TAction).Enabled := TreeView.PopUpNode <> nil else (Sender as TAction).Enabled := TreeView.Selected <> nil; end; Falls dieser Aufruf über das PopupMenü kommt wird ActionComponent aber nicht als TMenuItem erkannt. Wo liegt der Fehler? Grüße Sebastian |
Re: Auslöser einer Action feststellen will nicht so recht
Moin Sebastian,
also wenn ich das richtig verstehe (benutzt hab' ich das noch nicht), wird OnUpdate nicht durch eine Kompo ausgelöst. Dafür wäre OnExecute zuständig. |
Re: Auslöser einer Action feststellen will nicht so recht
Zitat:
Delphi-Quellcode:
Dadurch werden entweder das TMenuItem oder der Button enabled oder auch nicht.
procedure TMainForm.AddPicturesActionUpdate(Sender: TObject);
begin (Sender as TAction).Enabled := ThumbListView.SelCount > 0; end; In meinem 1. Post muss ich halt die Überprüfung je nach Auslöser unterschiedlich gestalten.. |
Re: Auslöser einer Action feststellen will nicht so recht
Moin Sebastian,
im funktionierenden Beispiel fragst Du auch nur den Sender aber, nicht aber die entsprechende Komponente, die, IMHO, nil zurückliefern dürfte innerhalb einer OnUpdate Prozedur. Lass Dir das doch mal anzeigen. |
Re: Auslöser einer Action feststellen will nicht so recht
Hi sieppl,
in der OH steht folgendes: Indicates the client component that caused this action to execute. ActionComponent ist also nur bei OnExecute und nicht bei OnUpdate verfügbar. Nach der Ausführung des Codes im OnExecute wird ActionComponent wieder auf nil gesetzt. Greetz alcaeus |
Re: Auslöser einer Action feststellen will nicht so recht
Zitat:
Ich möchte keine 2 Actions anlegen, dass wäre unelegant.. |
Re: Auslöser einer Action feststellen will nicht so recht
Moin Sebastian,
da OnUpdate nicht von einer Komponente ausgelöst wird, sondern bei Inaktivität der Anwendung, kann es dafür keine Lösung geben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 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