Как получить доступ к проверенному свойству кнопки ленты Delphi 2009 во время выполнения?
Вопрос
Я хочу сбросить свойство "checked" для всех объектов TAction ленты на false при нажатии на любую кнопку ленты, а затем установить его true только для нажатой кнопки.Но я еще не нашел способа получить доступ ко всем "отмеченным" свойствам ActionManager Actions.Я думаю, мне нужно просмотреть список действий actionmanager...однако, но я еще не нашел правильного способа сделать.Я был бы очень рад, если бы кто-нибудь мог дать мне какой-нибудь намек на это.
Спасибо!
Решение
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
, таким образом, приведенный выше код также отфильтровывает то, что не происходит от этого класса.