Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Necesito Deshabilitar acciones en TActionManager (https://www.clubdelphi.com/foros/showthread.php?t=85209)

Jere_84 14-02-2014 14:35:08

Necesito Deshabilitar acciones en TActionManager
 
Buenas tardes!, Estoy utilizando la cinta de opciones TRibbon que se utiliza conjuntamente con el componente TActionManager este ultimo tiene todas las acciones que están en la cinta TRibbon. Lo que necesito hacer es para ciertos usuarios deshabilitar algunas acciones del TActionManager.

Logre ocultarlas:
Código Delphi [-]
for i := 0 to ActionManager1.ActionBars.Count -1 do
    for j := 0 to ActionManager1.ActionBars[i].Items.Count -1  do
      if ActionManager1.ActionBars[i].Items[j].tag = 0 then
        ActionManager1.ActionBars[i].Items[j].Visible := False;

Pero necesito deshabilitarlas, algo así debería ser pero no funciona:
Código Delphi [-]
for i := 0 to ActionManager1.ActionCount - 1 do
       if ActionManager1.Actions[i] is TAction then
         (ActionManager1.Actions[i] as TAction).Enabled := False;

En el TActionManager al ver la lista de acciones esta la propiedad Enabled pero esto en diseño, en ejecución no puedo encontrar el camino a esta propiedad.

Bueno si alguien me puede ayudar será bienvenido!

Saludos cordiales.

Neftali [Germán.Estévez] 14-02-2014 16:48:34

Algo debes estar haciendo mal.
A mi esto me funciona perfectamente:

Código Delphi [-]
  for i := 0 to ActionManager1.ActionCount - 1 do begin
    TAction(ActionManager1.Actions[i]).Enabled := False;
  end;

Las deshabilita todas.

Añado: Si quieres realizar la comprobación e incluir algunas Standard Actions, haz el CAST como TCustomAction.

Código Delphi [-]
  for i := 0 to ActionManager1.ActionCount - 1 do begin
    if (ActionManager1.Actions[i] is TCustomAction) then begin
      TCustomAction(ActionManager1.Actions[i]).Enabled := False;
    end;
  end;

Jere_84 14-02-2014 23:21:27

Hola Neftali!, si funciona muchas gracias... no se porque estaba haciendo la prueba con acciones estándar y estas no se bloqueaban.

Una pregunta ¿Consideras que trabajando con la propiedad Enabled y la propiedad Tag puede ser útil para el bloqueo a usuarios?

Estuve viendo que los TActionClients tienen una propiedad llamada "Accesible" pero no hay documentación alguna en la ayuda de Delphi XE2, ni tampoco en la web, ¿tenes idea si se utiliza para accesos y bloqueos a usuarios?

Saludos cordiales.

Neftali [Germán.Estévez] 17-02-2014 12:21:57

Las pocas veces que he usado algo similar lo he hecho con las propiedades Enabled y Visible.
Yo tampoco he usado esta propiedad.

Habrá que investigarla... ;-)


La franja horaria es GMT +2. Ahora son las 20:07:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi