2009-07-05 2 views
1

Я хочу сбросить свойство «checked» всех объектов TAction ленты на false при нажатии на любую кнопку ленты, а затем установить только значение true на нажатой кнопке. Но я еще не нашел способ получить доступ ко всем «проверенным» свойствам действий ActionManager. Мне кажется, мне нужно прокрутить список действий actionmanager ... однако, я еще не нашел правильного пути. Я был бы очень рад, если бы кто-нибудь мог дать мне некоторый намек на это.Как получить доступ к проверенному свойству кнопки ленты Delphi 2009 во время выполнения?

Спасибо!

+2

Если вы установили свойство GroupIndex для действий, вам не нужно писать какой-либо дополнительный код вообще. Это свойство сообщает действиям, что они являются частью группы, поэтому они автоматически деактивируют все остальное, когда кто-то проверяется, как переключатель. –

+0

Кроме того, я не уверен, что этот вопрос имеет отношение к лентам или к Delphi 2009. Действия были представлены в Delphi 4. Рассмотрите возможность удаления этих тегов или редактирования вопроса, чтобы сделать эти данные релевантными. –

+0

@ Rob: отличные моменты в тегах, и признать, что они причастны к неправильной пометке. Вы редактировали по вашему предложению. Отличный ответ, кстати! – Argalatyr

ответ

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

+0

Хотя rob решил мой конкретный вопрос по-другому, этот ответ также очень полезен для понимания того, как работает все это действие. Спасибо! – user133370