Ver Mensaje Individual
  #5  
Antiguo 03-02-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
la forma mas facil es usar TActionList, en donde defines diferentes TAction

En el evento OnExecute de cada TAction escribes el codigo que queres que ejecute ese "comando"
En el evento OnUpdate (el cual es invocado periodicamente por la Vcl) podes escribir validaciones del tipo habilitar/deshabilitar la accion, por ej:

Código Delphi [-]
 type
  TTuForm = class(TForm)
    ActionList: TActionList;
    Action_Imprimir: TAction;
    procedure Action_ImprimirExecute(Sender: TObject);
    procedure Action_ImprimirUpdate(Sender: TObject);
  end;

procedure TTuForm.Action_ImprimirExecute(Sender: TObject);
begin
  // codigo para imprimir
end;

procedure TTuForm.Action_ImprimirUpdate(Sender: TObject);
begin
  Action_Imprimir.Enabled := UsuarioPuedeImprimir;
end;

Tambien es posible directamente dejar TAction.Enabled a True o False en algun momento de inicializacion y no escribir los eventos OnUpdate

Lo bueno de las TAction es que podes enlazarla a distintos componentes, de esta forma centralizas el codigo para ejecutar los distintos comandos y las validaciones en objetos TAction, y luego simlemente conectas componentes con su determinada accion

Los TButton o similares, los elementos de los objetos TMainMenu, y muchos mas (en realidad todos los descendientes de TControl), tienen una propiedad publicada "Action".

Dicha accion puede ser compartida por distintos controles. Por ejemplo, si tenes un item de un menu conectado con la Action_Imprimir, al hacer click sobre ese item, se ejecuta el evento Action_ImprimirExecute. Si la misma accion la utiliza un componente TButton, el caso es sl mismo, al hacer click sobre el boton, se ejecuta el mismo codigo

De manera analoga, si deshabilitas la accion, todos los componentes asociados se deshabilitan; en otras palabras, no hay manera de poder ejecutar el comando hasta que se habilite nuevamente
Responder Con Cita