Introducción
Parte I. Programación Básica
Parte II. Modificando la interfaz Gráfica "básica"
Parte III. TActionManager en Acción
Parte IV. Modificando la "nueva" Interfaz Gráfica
Introdudcción
Seguramente en algún momento de tu vida de programador has usado el componente TMainMenu para diseñar tus menús de sistema o has utilizado componentes como TButton, TSpeedButton, TBitBtn, etc.. para ejecutar acciones en tus programas. Sin embargo, a pesar de ser algo "normal" esta forma de trabajar con los eventos de un objeto, a la larga nos puede provocar mas trabajo que ventajas cuando deseamos rediseñar la interfaz gráfica de nuestras aplicaciones.
¿Por que digo esto? Bueno, cuando deseamos modificar la interfaz gráfica de nuestras aplicaciones y queremos por ejemplo, eliminar un TMainMenu y en su lugar crear botones tenemos que "transferir" el código escrito en los eventos del menú a los botones que vamos a crear, si nuestra aplicación es muy simple no tendríamos ningún problema en hacer esto, pero si nuestro proyecto contiene decenas de eventos esto llegaría a ser una actividad titánica y con un margen de error muy alto dependiendo de la complejidad de nuestro proyecto.
Para ello, Delphi nos obsequia un componente de nombre TActionManager, que tiene como objetivo principal el de separar la interfaz gráfica de nuestra lógica de negocio, es decir vamos a obtener una aplicación de dos capas (la capa visual y la capa lógica) algo que desde mi punto de vista es muy funcional e interesante.
Parte I. Programación Básica
Para iniciar este tutorial vamos a crear una aplicación típica con un TMainMenu para después entrar de lleno con el componente TActionManager
Pegamos en nuestra forma los siguientes objetos:
1 TMainMenu
2 TEdit
4 TLabel
Agregamos las opciones: (Suma,Resta,Multiplicación,División,Salir) en nuestro TMainMenu.
procedure TForm2.Divisin1Click(Sender: TObject); begin label1.Caption := format('%f',[strtoint(edit1.Text) / strtoint(edit2.Text)]); end; procedure TForm2.Multiplicacin1Click(Sender: TObject); begin label1.Caption := format('%d',[strtoint(edit1.Text)*strtoint(edit2.Text)]); end; procedure TForm2.Resta1Click(Sender: TObject); begin label1.Caption := format('%d',[strtoint(edit1.Text)-strtoint(edit2.Text)]); end; procedure TForm2.Suma1Click(Sender: TObject); begin label1.Caption := format('%d',[strtoint(edit1.Text)+strtoint(edit2.Text)]); end; procedure TForm2.Salir1Click(Sender: TObject); begin close; end;
Compilamos y ejecutamos nuestro programa ejemplo y deberá de funcionar correctamente

Ya tenemos creada una pequeña aplicación con el típico Menú, pero que pasa si ahora deseo cambiar el formato de mi interfaz gráfica eliminando el TMainMenu y en su lugar mostrar botónes para ejecutar las operaciones.
Los pasos a seguir serían:
Eliminar el objeto TMainMenu, agregamos 5 TButton y asignamos en la propiedad caption de cada botón la operación correspondiente, algunos lo que hacemos es asignar el nombre en la propiedad name del objeto para que evitar "dolores de cabeza" a la hora de identificar los objetos.
Parte III. TActionManager en Acción
Ya hemos visto el uso de los componentes básicos y sus eventos, ahora veremos las grandes diferencias y las ventajas de usar el componente TActionManager.
Para comenzar vamos a crear una nueva aplicación y agregamos los siguientes componentes:
1 TActionManager
2 TEdit
4 TLabel
Para comenzar ordenadamente, vamos a asignar el nombre de cada una de las acciones en la propiedad Name en el inspector de objetos como se muestra en la siguiente figura:
procedure TForm2.DivisionExecute(Sender: TObject); begin label1.Caption := format('%f',[strtoint(edit1.Text) / strtoint(edit2.Text)]); end; procedure TForm2.MultiplicacionExecute(Sender: TObject); begin label1.Caption := format('%d',[strtoint(edit1.Text)*strtoint(edit2.Text)]); end; procedure TForm2.RestaExecute(Sender: TObject); begin label1.Caption := format('%d',[strtoint(edit1.Text)-strtoint(edit2.Text)]); end; procedure TForm2.SumaExecute(Sender: TObject); begin label1.Caption := format('%d',[strtoint(edit1.Text)+strtoint(edit2.Text)]); end; procedure TForm2.SalirExecute(Sender: TObject); begin close; end;
Hasta este punto ya hemos terminado con la capa lógica de nuestro proyecto, ahora procederemos a "diseñar" la capa visual y para ello comenzaremos por crear una nueva categoría donde estarán agrupadas nuestras acciones.
Seleccionamos cualquier acción y en la propiedad Category de la acción en el inspector de objetos "escribimos" el nombre de la categoría que deseamos (por ejemplo Menu) y automáticamente la acción seleccionada pertenecerá a dicha categoría.
http://egostar.delph...s/Categoria.PNG
Como podemos observar, la acción suma ya no está en el bloque de acciones sin categoría, ahora seleccionamos las demás acciones y le asignamos la categoría Menu.En el editor de acciones del TActionManager vamos a la pestaña ToolBars y creamos una nueva Barra de Herramientas.
http://egostar.delph...es/ToolBars.PNG
Ahora, regresamos a la pestaña Actions y "arrastramos" la categoría Menu en la Barra de Herramientas que se ha creado.
http://egostar.delph...s/Arrastrar.PNG
Como podemos observar, ya tenemos un Menú igual que lo teniamos con el componente TMainMenu, con la diferencia que en este momento el programa ya puede ser ejecutado y con las opciones del Menú ligadas a cada una de sus acciones, además de que los caption de las opciones del menú ya tienen el nombre correspondiente a cada una de ellas.Compilamos y corremos nuestro programa y deberá funcionar igual que con el TMainMenu.
Parte IV. Modificando la "nueva" Interfaz Gráfica
Una de las ventajas principales del componente TActionManager como ya lo mencioné, es la de separar la capa lógica de la capa visual de nuestros proyectos, de tal forma que modifcar nuestra interfaz gráfica es por demás sencilla.
Con el mismo ejemplo de sustituir el menú de acciones por botones, vamos a proceder de la siguiente forma:
- Eliminamos la barra de herramientas donde tenemos nuestras acciones, no nos preocupemos que nuestro código no tiene ninguna relación con dicha barra.
- Agregamos 5 botones en nuestra forma
- Asignamos la propiedad Action de cada botón con la acción que deseamos sea ejecutada.
En este momento todo el código escrito en las acciones del TActionManager está automáticamente asignado a cada botón, si ejecutamos nuestra aplicación, veremos que el sistema es ejecutado sin haber "transferido" ninguna línea de código lo que nos muestra que usar este componente, además de estandarizar nuestra aplicación nos brinda mayor flexibilidad para modificar nuestra interfaz gráfica con un mínimo de esfuerzo.
Existen otras ventajas al usar este tipo de programación como puede ser la distribución de trabajo en equipo, es decir, mientras un programador se dedica al desarrollo de la capa lógica otro puede estar a cargo del diseño de la capa visual.
Con esto terminamos este tutorial básico del uso del componente TActionManager, en un futuro publicaré mas ventajas de este excelente componente.
#indice
Salud OS