Delphi XE2:迭代TAcionManager对象中的动作

sha*_*n74 3 delphi iterator action

我在想,如果有一种方法,通过迭代TActionsTActionManager没有了传统的我:对...但在像代码使用迭代器= 0

for (action in actionManager.actions) do
begin
...
end;
Run Code Online (Sandbox Code Playgroud)

它不起作用.我已经尝试了很多,总是得到相同的结果.

这是不可能的,还是我做错了什么?

谢谢!M.

Dav*_*nan 5

操作管理器提供的枚举器提供键入的操作TContainedAction.它由操作管理器类提供,以便您可以直接枚举操作管理器.您的代码尝试迭代ActionManager.Actions,这是不可能的,因为它Actions是一个索引属性.你无法迭代其中一个.

所以你的代码需要看起来像这样:

var
  Action: TContainedAction;
....
for Action in ActionManager do
begin
  ....
end;
Run Code Online (Sandbox Code Playgroud)

as如果要访问在后代中声明的属性,则可能需要使用向上转换TContainedAction.