如何从TActionManager获取所有TAction?

Leo*_*era 3 delphi taction delphi-xe tactionmanager

TActionManager在应用程序中定义了所有动作。我需要获取其所有动作的列表;当前,使用其Actions属性,我可以获取action(GetNamePath)的“路径”,但我也想获取其标题。

是否可以从动作管理器获取所有动作?

Dav*_*nan 5

Actions[]属性返回a TContainedAction,它是一个低级基类。您需要将其转换为适当的派生类。例如,如果您的动作管理器包含TAction实例,则可以执行以下操作:

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

如果您要从派生自定义操作TCustomAction,请在演员表中使用该操作。

显然,您可能想要使用is该操作检查实际的运行时类型,并避免运行时强制转换错误。