Как получить доступ к проверенному свойству кнопки ленты Delphi 2009 во время выполнения?

Я хочу сбросить свойство "флажок" всех объектов TAction ленты на "ложь" при нажатии на любую кнопку ленты, а затем установить только значение "истина" на нажатой кнопке. Но я еще не нашел способ получить доступ ко всем "проверенным" свойствам действий ActionManager. Я думаю, что мне нужно просмотреть список действий actionmanager... однако, но я еще не нашел правильный способ сделать это. Я был бы очень рад, если бы кто-нибудь дал мне подсказку на это.

Спасибо!

1 ответ

Решение

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поэтому приведенный выше код также отфильтровывает вещи, которые не происходят от этого класса.

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