Cómo acceder a la propiedad comprobada de un botón de la cinta Delphi 2009 en tiempo de ejecución?

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

  •  23-08-2019
  •  | 
  •  

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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top