Как получить все TAction от TActionManager?

У меня есть TActionManager в моем приложении, где все действия определены. Мне нужно получить список всех его действий; в настоящее время, используя его свойство Actions, я могу получить "путь" для действия (GetNamePath) но я тоже хочу получить его подпись.

Можно ли получить все действия от менеджера действий?

1 ответ

Решение

Actions[] свойство возвращает TContainedAction который является базовым классом низкого уровня. Вам нужно будет преобразовать это в соответствующий производный класс. Например, если ваш менеджер действий содержит TAction экземпляры, то вы можете сделать это:

for i := 0 to ActionManager1.ActionCount-1 do begin
  Writeln((ActionManager1.Actions[i] as TAction).Caption);
end;

Если вы выводите пользовательские действия из TCustomAction, а затем используйте это в вашем актерском составе.

Очевидно, вы можете использовать is проверить фактический тип времени выполнения действия и избежать ошибки приведения во время выполнения.

Другие вопросы по тегам