我想在单击任何功能区按钮时将功能区的所有TAction对象的“checked”属性重置为false,然后仅在按下的按钮上将其设置为true。 但我还没有找到一种方法来访问ActionManager的Actions的所有“已检查”属性。 我想我需要遍历actionmanager的动作列表......但是,我还没有找到正确的方法。 如果有人能给我一些暗示,我会很高兴。
谢谢!
答案 0 :(得分:2)
TActionManager
来自TCustomActionList
,所以无论你如何处理后者,都可以使用前者。它有两个你需要使用的属性,Actions
,它是可以访问所有列表操作的数组属性,ActionCount
,它告诉你有多少属性。使用它们来编写一个普通的循环,如下所示:
var
i: Integer;
Contained: TContainedAction;
Action: TCustomAction;
begin
for i := 0 to Pred(ActionList.ActionCount) do begin
Contained := ActionList[i]; // shorthand for ActionList.Actions[i]
if not (Contained is TCustomAction) then
continue; // Doesn't have Checked property
Action := TCustomAction(Contained);
Action.Checked := False;
end;
end;
动作列表可以包含多种动作,但它们并不都具有Checked
属性。该属性是在TCustomAction
中引入的,因此上面的代码也会过滤掉那些不属于该类的内容。