--- ---
Question
In a TActionList, there is an event OnExecute, which is called before executing an action. Now I would like to enhance TActionList with an event OnAfterExecute, which is called when the execution of any action is finished. I looked at the VCL code, but for me it's not clear, where and how to add this feature in a subclass of TActionList.

    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.