FAQ VCL
Компоненты\ActionList

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как узнать, какой объект вызвал TAction?

procedure TForm1.Action1Execute(Sender: TObject);
begin
   ShowMessage( ( Sender as TAction ).ActionComponent.ClassName );
end;


Как перехватить выполнение метода Execute TAction?

// Это делается при помощи TApplicationEvent в обработчике ActionExecute.
procedure TForm1.ApplicationEvents1ActionExecute(Action: TBasicAction;
  var Handled: Boolean);
begin
   if Assigned(Action) then
   begin
      // Проверяем, задано ли имя объекта Action
      if Action.Name <> ''  then
         ShowMessage( '# CM_ACTIONEXECUTE Action.Name = ' +Action.Name + #10#13+
                      'Action.Owner.ClassName = ' + Action.Owner.ClassName  );
      // Если нужно запретить выплнение Action, то Handled := True,
      // иначе Handled := False
      Handled := False;
   end;
end;

При использовании материала - ссылка на сайт обязательна