Personalización de menús

Última modificación el Viernes, 24 abril 2009 07:56 Autor: ProgramadorWeb Lunes, 25 agosto 2008 07:54

Personalización de menús

Personalización de menús   abcamber61 Personalización de menús


Una de las opciones que más suelen valorar los usuarios de una aplicación es la posibilidad de personalizar su interfaz de usuario, por ejemplo barras de botones y menús, lo cual les permite adaptarlas a sus preferencias y trabajar más cómodamente. Para el programador, sin embargo, no es una tarea sencilla de implementar. ¿Cómo permitir, por ejemplo, la personalización de un menú?


Efectuar esa tarea directamente sobre el menú realmente no es sencillo, aunque con algo de trabajo podría hacerse. Resulta bastante más fácil, sin embargo, traspasar la estructura del menú a un control pensado específicamente para la visualización y modificación de listas jerárquicas de datos, como es el caso de un menú. Este control es TTreeView, y para copiar un menú completo en dicho control tan sólo habría que llamar a la función siguiente entregando dos parámetros: el nombre del menú y el del TTreeView destinatario.


// Procedimiento para copiar


// un TMainMenu a TTreeView


Procedure CopiaMenuATreeView(


Menu: TMainMenu; Arbol: TTreeView);


Var


Contador: Integer;


Nodo: TTreeNode;


// Procedimiento interno recursivo que se


// encarga de recorrer las opciones


Procedure AnadeOpcion(


Opcion: TMenuItem; Nodo: TTreeNode);


Var


Contador: Integer;


NuevoNodo: TTreeNode;


Begin


// Añadimos la opción recibida


NuevoNodo := Arbol.Items.AddChild(


Nodo, Opcion.Caption);


// y recorremos todas las que pudiera tener


For Contador := 0 To Opcion.Count-1 Do


// llamándonos de forma recursiva


AnadeOpcion(Opcion.Items[Contador],


NuevoNodo);


End;


Begin


// Añadimos un primer nodo raíz


Nodo := Arbol.Items.Add(Nil,


Menu.Name);


// y recorremos las opciones principales


// llamando a AnadeOpcion por cada una


For Contador := 0 To


Menu.Items.Count-1 Do


AnadeOpcion(


Menu.Items[Contador], Nodo);


End;


Tras insertar en un formulario un menú con algunas opciones y un TTreeView, podríamos ejecutar el programa y ver cómo la estructura de ese menú pasa automáticamente a la lista jerárquica. Allí el usuario puede modificar los títulos de las opciones y cambiar las teclas de acceso rápido. Incluso, disponiendo las opciones adecuadas, podría permitirse el desplazamiento de las opciones para que pudieran ser colocadas en el orden que interesase.


Lógicamente, finalizado el trabajo del usuario sería preciso recrear el menú a partir de los datos existentes en el TTreeView en un proceso que, básicamente, sería el inverso al desarrollado en el código anterior.





Si te ha parecido interesante únete a nuestra comunidad de FACEBOOK y compartelo con tus amigos.





Articulos relacionados:


No olvides compartir Personalización de menús en tus redes sociales :-)
     

1 Comentario

  1. Joel   |  Martes, 30 junio 2009 a 2:51 pm

    Excelente trabajo

Enviar comentario