[RESUELTO] Deshabilitar Accion del TActionManager
Comenzado por
egostar
, dic 16 2009 06:21
6 respuestas en este tema
#1
Escrito 16 diciembre 2009 - 06:21
Hola
Estoy iniciando un desarrollo y entre otras cosas necesito deshabilitar una acción del TActionManager desde su propiedad Enabled.
¿Alguien sabe como puedo hacer eso en tiempo de ejecución?
Salud OS
Les muestro una imagen de lo que necesito para ser más claro.
Estoy iniciando un desarrollo y entre otras cosas necesito deshabilitar una acción del TActionManager desde su propiedad Enabled.
¿Alguien sabe como puedo hacer eso en tiempo de ejecución?
Salud OS
Les muestro una imagen de lo que necesito para ser más claro.
#2
Escrito 16 diciembre 2009 - 06:41
Pues basta con poner:
Saludos.
delphi
usuarios.enabled:= false;
Saludos.
#3
Escrito 16 diciembre 2009 - 06:47
Gracias amigo, pero creo que omití algo importante, estoy haciendo esto en una función dependiendo del tag que tiene cada accion, ya había pensado en esa posibilidad pero no logro obtener el nombre de la accion, este es parte del código:
Salud OS
delphi
var i: integer; Acciones: TActionClientItem; begin for i := 0 to ActionManager1.ActionCount - 1 do begin if ActionManager1.Actions[i].Tag = Privilegios[i] then ShowMessage(inttostr(ActionManager1.Actions[i].tag)); end; end;
Salud OS
#4
Escrito 16 diciembre 2009 - 09:31
Hola
Pues encontré una forma diferente de hacer las cosas, no estoy deshabilitando las acciones, lo que hago es hacerlas invisibles. De cualquier forma seguiré investigando hasta encontrar lo que había imaginado inicialmente
Salud OS
Pues encontré una forma diferente de hacer las cosas, no estoy deshabilitando las acciones, lo que hago es hacerlas invisibles. De cualquier forma seguiré investigando hasta encontrar lo que había imaginado inicialmente
delphi
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin Privilegios[1] := 0; //Para prueba inicialice a cero este item. for i := 0 to ActionManager1.ActionCount-1 do begin if ActionManager1.ActionBars[0].Items[i].Tag = Privilegios[i] then begin ActionManager1.ActionBars[0].Items[i].Visible := true; end else begin ActionManager1.ActionBars[0].Items[i].Visible := false; end; end; end; procedure TForm1.FormShow(Sender: TObject); var i: integer; begin for i := 0 to ActionManager1.ActionCount-1 do begin if ActionManager1.ActionBars[0].Items[i].Tag = Privilegios[i] then begin ActionManager1.ActionBars[0].Items[i].Visible := true; end else begin ActionManager1.ActionBars[0].Items[i].Visible := false; end; end; end;
Salud OS
#5
Escrito 16 diciembre 2009 - 11:12
Hola
Tuve un problema de indices al colocar las acciones por categorías y finalmente el código quedó de la siguiente forma.
Salud OS
Tuve un problema de indices al colocar las acciones por categorías y finalmente el código quedó de la siguiente forma.
delphi
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin Privilegios := []; Include(Privilegios,101); Include(Privilegios,102); for i := 0 to ActionManager1.ActionCount-1 do begin if ActionManager1.Actions[i].Tag in Privilegios then begin (ActionManager1.Actions[i] as TAction).enabled := true; end else begin (ActionManager1.Actions[i] as TAction).enabled := false; end; end; end; procedure TForm1.FormShow(Sender: TObject); var i: integer; begin Privilegios := []; Include(Privilegios,100); Include(Privilegios,101); Include(Privilegios,102); for i := 0 to ActionManager1.ActionCount-1 do begin if ActionManager1.Actions[i].Tag in Privilegios then begin (ActionManager1.Actions[i] as TAction).enabled := true; end else begin (ActionManager1.Actions[i] as TAction).enabled := false; end; end; end;
Salud OS
#6
Escrito 04 febrero 2010 - 04:25
Hola egostar.
pporque no usas el evento Update del Taction.
citando a la ayuda:
y ahi pondrias:
así, este evento controla el comportamiento de su acción, en el tiempo idle de la app.
espero te sirva.
pporque no usas el evento Update del Taction.
citando a la ayuda:
Occurs when the application is idle or when the action list updates.
Write an OnUpdate event handler to execute centralized code while an application is idle. For example, actions may want to update enabling and disabling, or checking and unchecking of client targets.
y ahi pondrias:
delphi
(Sender as TAction).enabled := HacerAlgoConElTag( (Sender as TAction).tag);
así, este evento controla el comportamiento de su acción, en el tiempo idle de la app.
espero te sirva.
#7
Escrito 04 febrero 2010 - 04:45
Ah vaya, intentaré usar este concepto y te comento que sucedió
Salud OS
Salud OS