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

StackOverflow https://stackoverflow.com/questions/1084659

  •  23-08-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top