In welcher Form könnte sich das negativ auswirken?
Das UpdateAction wird ja zyklisch aufgerufen. Insofern kann sich in manchen Fällen z.B. die Enabled-Bedingung der Action zwischen dem letzten UpdateAction und dem Execute-Aufruf geändert haben. Der Update-Aufruf im Execute würde das erkennen und entsprechend agieren.
Was mir aufgefallen ist, das Actions, denen kein OnExecute zugewiesen ist, automatisch auf Enabled := False gesetzt wird.
Dafür gibt es bei der Action die Eigenschaft DisableIfNoHandler, die per Default auf True steht.
Ich habe eigendlich angenommen, dass UpdateActions der beste Zeitpunkt ist, die Actions zu setzen. Der Name der Prozedur sagt doch alles.
UpdateActions wird von zwei Stellen aufgerufen: Aus einem ActionMenu im Zusammenhang mit einem ActionManager und im TApplication.DoActionIdle. Letzteres wird im TApplication.Idle aufgerufen wenn Done = True ist oder in einem Timer-Event wenn mit ActionUpdateDelay > 0 die Update-Frequenz gedrosselt wird (das ist z.B. bei
MDI-Anwendungen notwendig). Somit geschieht das in der Regel dann, wenn die Applikation gerade nichts besseres zu tun hat.
Zwischen einem UpdateAction und dem Action-Execute liegt also immer eine zeitliche Lücke. Wenn dann noch mit Application.ProcessMessages hantiert wird, sind sporadische Merkwürdigkeiten kaum noch vermeidbar.