AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Auslöser einer Action feststellen will nicht so recht
Thema durchsuchen
Ansicht
Themen-Optionen

Auslöser einer Action feststellen will nicht so recht

Ein Thema von sieppl · begonnen am 13. Okt 2004 · letzter Beitrag vom 13. Okt 2004
Antwort Antwort
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Auslöser einer Action feststellen will nicht so recht

  Alt 13. Okt 2004, 21:47
Hi!

Guckt euch mal bitte diesen Code an:
Delphi-Quellcode:
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;
Die Action wird entweder durch einen Button oder eine MenuItem eines PopUpMenüs ausgelöst.
Falls dieser Aufruf über das PopupMenü kommt wird ActionComponent aber nicht als TMenuItem erkannt.
Wo liegt der Fehler?

Grüße

Sebastian
Sebastian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Auslöser einer Action feststellen will nicht so recht

  Alt 13. Okt 2004, 21:55
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#3

Re: Auslöser einer Action feststellen will nicht so recht

  Alt 13. Okt 2004, 22:04
Zitat von Christian Seehase:
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.
Das hier funktioniert zum Beispiel definitiv:

Delphi-Quellcode:
procedure TMainForm.AddPicturesActionUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled := ThumbListView.SelCount > 0;
end;
Dadurch werden entweder das TMenuItem oder der Button enabled oder auch nicht.
In meinem 1. Post muss ich halt die Überprüfung je nach Auslöser unterschiedlich
gestalten..
Sebastian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Auslöser einer Action feststellen will nicht so recht

  Alt 13. Okt 2004, 22:09
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Auslöser einer Action feststellen will nicht so recht

  Alt 13. Okt 2004, 22:15
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#6

Re: Auslöser einer Action feststellen will nicht so recht

  Alt 13. Okt 2004, 22:22
Zitat von Christian Seehase:
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.
Ihr habt Recht. Gibt es denn irgendeine Möglichkeit bei OnUpdate an die Komponente zu kommen?
Ich möchte keine 2 Actions anlegen, dass wäre unelegant..
Sebastian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Auslöser einer Action feststellen will nicht so recht

  Alt 13. Okt 2004, 22:27
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:02 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