首页 > 技术文章 > TActionList.OnUpdate

jspdelphi 2021-05-08 19:13 原文

System.Actions.TContainedActionList.OnUpdate

From RAD Studio API Documentation
 

Delphi

property OnUpdate: TActionEvent read FOnUpdate write FOnUpdate;

C++

__property System::Classes::TActionEvent OnUpdate = {read=FOnUpdate, write=FOnUpdate};

Properties

TypeVisibilitySourceUnitParent
event protected
System.Actions.pas
System.Actions.hpp
System.Actions TContainedActionList

Description

Occurs when the application is idle so that the action list can update a specific action in the list.

Write an OnUpdate event handler to configure the properties of a specified action in the list so that it reflects current conditions.

When the application is idle, it cycles through every action in turn, giving it a chance to update itself to reflect current conditions. For each action, the first event to occur in this sequence is the action list's OnUpdate event. If the OnUpdate event handler sets its Handled parameter to True, the action is considered updated, and processing stops there. This blocks the execution of any other event handlers or any built-in response by a predefined action class.

If the OnUpdate event handler does not set its Handled parameter to True, the application's OnActionUpdate event occurs next. If the OnActionUpdate event does not update the action, the action object's OnUpdate event occurs. Finally, if the action does not have an OnUpdate event handler, the application executes any predefined update method implemented by the action object. 

执行顺序

  1. If the OnUpdate event handler does not set its Handled parameter to True,
  2. the application's OnActionUpdate event occurs next.
  3. If the OnActionUpdate event does not update the action,
  4. the action object's OnUpdate event occurs. Finally,
  5. if the action does not have an OnUpdate event handler, the application executes any predefined update method implemented by the action object. 

xe10生成的dll时,如果其内部中有窗体使用actionlist时,出现Kernelbase.dll错误 ,导致程序错误。

原因就是Vcl.Actnlist=>Update函数=>SendAppMessage时造成,只要在上面OnUpdate中Handled设置为True就可以处理

 

推荐阅读