Cómo acceder a la propiedad comprobada de un botón de la cinta Delphi 2009 en tiempo de ejecución?
Pregunta
Quiero restablecer la "marcada" propiedad de todos los objetos taction de una cinta en false cuando se hace clic en cualquier botón de la cinta y sólo puse verdadera del botón pulsado. Pero todavía no he encontrado una manera de acceder a todas las propiedades "controladas" de las acciones del ActionManager. Creo que necesito para recorrer ActionList del ActionManager ... sin embargo, pero todavía no he encontrado la forma correcta de hacerlo. Yo estaría muy contento si alguien me podría dar alguna pista sobre esto.
Gracias!
Solución
TActionManager
desciende de TCustomActionList
, así que lo que se puede hacer con este último, puede hacerlo con el primero. Tiene dos propiedades que tendrá que utilizar, Actions
, que es la propiedad de matriz que le da acceso a todas las acciones de la lista, y ActionCount
, que le indica cuántos hay. Utilizarlos para escribir un bucle de corriente, así:
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;
Las listas de acciones puede contener muchos tipos de acciones, y lo hacen propiedades no todos han Checked
. Esa propiedad se introduce en TCustomAction
, por lo que el código anterior también filtra las cosas que no descienden de esa clase.