AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TAction.OnUpdate wird nicht ausgeführt

Ein Thema von Volker Z. · begonnen am 15. Okt 2017 · letzter Beitrag vom 16. Okt 2017
Antwort Antwort
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#1

TAction.OnUpdate wird nicht ausgeführt

  Alt 15. Okt 2017, 21:10
Hallo Zusammen,

vielleicht bin ich einfach nur zu blöde, oder sitze schon zu lange vor dem Rechner und sehe die Wälder vor lauter Bäumen nicht mehr.

Meine Ausgangssituation: Auf einem Form liegt eine TActionList mit den TAction s von - sagen wir mal - A - Z. Jede TAction hat ihr eigenes TAction.OnUpdate . Alle TAction s haben (abgesehen von unterschiedlichen TAction.OnUpdate ) identische Eigenschaften, die Eigenschaft TActionList.State := asNormal .

Mein Problem: Es werden alle OnUpdate Events von A - Y ausgeführt, nur der für Z eben nicht. Versuche ich weitere TAction s einzufügen - mit zugehörigem TAction.OnUpdate -Event -, wird dieser auch nicht ausgeführt.

Ich hoffe, ich konnte mein Problem aussagekräftig genug beschreiben.

Kann mir da jemand weiterhelfen?

Gruß Volker

BTW: Nutze Delphi Xe4, Windows 10
Volker Zeller
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.211 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 08:19
Dann wirft deine TAction Y eine Exception?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 08:37
Alle TAction s haben (abgesehen von unterschiedlichen TAction.OnUpdate ) identische Eigenschaften
Sie haben alle (verschiedene) OnExecute Methoden? Mir ist einmal aufgefallen dass OnUpdate für eine Action nicht aufgerufen wurde weil dieser kein OnExecute zugewiesen war.
Michael Justin
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#4

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 10:09
Hallo,

vielen Dank erstmal für die Antworten.

Nein, eine Exeption wird von keiner TAction geschmissen.

Und: Allen TActions sind auch OnExecute -Events zugewiesen.

Gruß Volker
Volker Zeller
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 10:36
Kannst du es in einen kleinen Beispiel-Projekt reproduzieren?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 10:55
Das Execute wird bei allen ausgeführt?

An verschieb mal die Action Z, an die Postiton A in der Actionlist. Tritt der Fehler immernoch bei dieser Action auf oder jetzt bei der Action, die sich an nun an der Position Z befindet.

Bleibt der Fehler bei der Action, ist die Position uninterresant und das A - Y funktionieren, Z aber nicht nur Zufall. Der Fehler muss dann irgendwo bei der Action Z (und den nachfolgenden) liegen.

Tritt der Fehler nun aber bei der "neuen" Action an Position Z auf, dürfte der Fehler eher im Umfeld der Actionlist zu suchen sein.

In den Sourcen zu Delphi 7 von Forms.pas gibt es die procedure TApplication.WndProc(var Message: TMessage); Schau bitte mal in Deinen Quellen nach, ob es bei Deiner Delphiversion in der Forms.pas Quelltext in der Form
Delphi-Quellcode:
CM_ACTIONEXECUTE, CM_ACTIONUPDATE:
  Message.Result := Ord(DispatchAction(Message.Msg, TBasicAction(Message.LParam)));
vorkommt. Wenn ja, setze da mal 'nen Breakpoint hin und schaue, ob der bei allen Actions angesprungen wird.

In der ActnList.pas gibt es die function TContainedAction.Update: Boolean; . Setze da ebenfalls mal 'nen Breakpoint und prüfe, ob der Debugger bei allen Actions dort anhält und prüfe mal beim Rückgabewert dieser Funktion, ob es, abhängig von der aufrufenden Action, Unterschiede im Ergebnis gibt.

Eventuell kommst Du ja damit dem Problem näher.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#7

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 11:12
Zitat:
In inaktiven Phasen der Anwendung wird für jede Aktion, die mit einem Steuerelement oder Menüeintrag verknüpft ist, das Ereignis OnUpdate ausgelöst.
Ist die betroffene Action eventuell nicht mit einem Steuerelement oder Menüeintrag verknüpft?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#8

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 12:26
Hallo,

ein herzliches Dankeschön für all die Antworten.

Die Idee 'nen Breakpoint im Update-Event der TActionList zu setzten hatte ich schon. Es wurden auch alle TAction s aktualisiert, nur eben die eine nicht (bzw. wenn ich weitere TAction s hinzufügte).

Die betroffene TAction ist mit einem TButton verknüpft.

Zwischenzeitlich habe ich das Formular neu gebaut. Jetzt funktioniert es. Mal schauen, ob ich den Unterschied noch finde.

Gruß Volker
Volker Zeller
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: TAction.OnUpdate wird nicht ausgeführt

  Alt 16. Okt 2017, 12:31
Hast Du mal im Quelltext der DFM nach Unterschieden geschaut?
  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 18:53 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