--- ---
unit MyActionList; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ActnList; type TMyActionList = class(TActionList) private FOnAfterExecute: TActionEvent; SOnExecute: TActionEvent; protected procedure Loaded; override; procedure DoOnExecute(Action: TBasicAction; var Handled: Boolean); published property OnAfterExecute: TActionEvent read FOnAfterExecute write FOnAfterExecute; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TMyActionList]); end; { TMyActionList } procedure TMyActionList.DoOnExecute(Action: TBasicAction; var Handled: Boolean); begin if Assigned(SOnExecute) then begin SOnExecute(Action, Handled); if Assigned(OnAfterExecute) then OnAfterExecute(Action, Handled); end; end; procedure TMyActionList.Loaded; begin inherited; SOnExecute := OnExecute; OnExecute := DoOnExecute; end; end.