Como acessar a propriedade checked de um botão Delphi 2009 fita em tempo de execução?
Pergunta
Eu quero redefinir a "verificada" a propriedade de todos os objetos TAction de uma fita para false ao clicar em qualquer botão fita e só então definir verdade sobre o botão pressionado. Mas eu ainda não encontrou uma maneira de acessar todos os "verificados" propriedades das ações do ActionManager. Eu acho que preciso percorrer ActionList do ActionManager ... no entanto, mas eu ainda não encontrou o caminho certo para fazer. Eu ficaria muito feliz se alguém poderia me dar alguma dica sobre isso.
Obrigado!
Solução
desce TActionManager
de TCustomActionList
, então o que você pode fazer com o último, você pode fazer com o antigo. Ele tem duas propriedades que você precisa para usar, Actions
, que é a propriedade de matriz que lhe dá acesso a todas as ações da lista, e ActionCount
, que lhe diz quantos existem. Use-os para escrever um loop normal, como este:
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;
listas de ação pode conter muitos tipos de ações, e nem todos eles têm propriedades Checked
. Essa propriedade é introduzido no TCustomAction
, de modo que o código acima também filtra as coisas que não descem a partir dessa classe.