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
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