Come accedere alla proprietà verificata di un pulsante della barra multifunzione Delphi 2009 in fase di esecuzione?
Domanda
Voglio azzerare il "controllato" proprietà di tutti gli oggetti dell'aderenza in marcia di un nastro su false quando si fa clic su qualsiasi pulsante della barra multifunzione e quindi unico set vero sul tasto premuto. Ma non ho ancora trovato un modo per accedere a tutti i "controllato" proprietà delle azioni del ActionManager. Penso di aver bisogno di scorrere ActionList del ActionManager ... tuttavia, ma non ho ancora trovato il modo giusto per farlo. Sarei molto felice se qualcuno mi potrebbe dare qualche suggerimento su questo.
Grazie!
Soluzione
TActionManager
scende dal TCustomActionList
, per cui qualunque cosa si può fare con questi ultimi, si può fare con l'ex. Ha due proprietà che avrete bisogno di utilizzare, Actions
, che è la proprietà di matrice che consente di accedere a tutte le azioni della lista, e ActionCount
, che ti dice quanti ce ne sono. Utilizzare loro di scrivere un ciclo normale, in questo modo:
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;
liste di azione può contenere un sacco di tipi di azioni, e lo fanno proprietà non tutti hanno Checked
. Che la proprietà è stato introdotto in TCustomAction
, in modo che il codice di cui sopra anche filtra le cose che non discendono da quella classe.