Está en la página 1de 3

MENU ESTILO OFFICE 2007 (Cinta de Opciones o Ribbon Menu)

Tambien llamado TabMenu, porque semeja las pestañas de un


pageframe.

Bien, para comenzar les dire que esto no es una clase (vcx) y tampoco
un programa o generador, simplemente es una idea rapida que implemente
para crear este tipo de menu. Antes de esto, por supuesto consulte en
PortalFox y UniversalThread y CodePlex encontrando muy buenas clases como
la de TABMENU y la de Common Controls.

Tambien, observe que los menus de Office se basan en archivos XML y


los programas que habia para modificarlos, eran generadores de estos
archivos. Asimismo, busque algunos controles ActiveX que hicieran este
trabajo por mi de alguna formas mas sencilla, encontre algunos…

El unico asunto con todos, es que tanto los controles como las clases
necesitaba crear o generar mis opciones, ponerlas en orden y seleccionar mis
iconos, pero en realidad no tenia una idea clara de cómo queria mi menu. Por
lo cual decidi comenzar de cero y hacerlo “a pie” por hablar coloquialmente. Es
decir, usando el diseñador de formas de VFP.

No es un buen metodo lo reconozco, pero me resulto simple y rapido.


Puesto que no es una clase, es necesario reemplazar casi todo si lo quiero usar
en otro lugar, pero los mismos 15 minutos que me tarde en generar un codigo
(quiza porque tenia que entender como funcionaba la clase) fueron los que
necesite o menos para cambiar rapidamente los caption e iconos.

Este es mi menu y como ven es relativamente simple, pero asemeja


mucho la interfaz de los menus de Office 2007. Veamos los componentes.

1) El menu en si, se compone en la parte superior de un


CommandGroup. El “truco” es que los botones se pongan con un
efecto especial de PLAIN.
2) El recuadro inferior donde van las opciones, es simplemente un
PAGEFRAME con las pestañas desactivadas, asi, al dar un click en una
opcion de la parte superior, nos vamos a la pestaña adecuada.
3) Cada pestaña tiene un recuadro con bordes redondeados ahí donde
quiero categorizar
4) Dentro estan COMMANDGROUP para poner las opciones, con el efecto
PLAIN.
5) Opcionalmente en la parte inferior tambien tengo un boton de
comando desactivado por si quiero “agregar” mas opciones a la
categoria.
6) La ventana principal tiene apagados varias cosas: EL TITULO, LOS
BOTONES DE MINIZAR, MAXIMIZAR, CERRAR, y los reemplace por mis
propios BOTONES con PLAIN.
7) Para terminar el efecto, agregue una imagen oscura en la parte
superior y una imagen de bola redonda (sacada de la clase
TABMENU). Dentro de este circulo hay un boton de comando invisible
que activa un menu SHORTCUT para ver el resto de las opciones.

Y es todo. Basicamente todo es visual y puedo pensar en acomodar las


opciones mucho mas rapido y comodo. El codigo de cada grupo de botones de
comando esta en el evento CLICK en lugar de cada boton, manejado con un
case. Por ejemplo, para el menu superior, queda asi:

thisform.tabmenutop.command1.SpecialEffect = 1
thisform.tabmenutop.command2.SpecialEffect = 1
thisform.tabmenutop.command3.SpecialEffect = 1
thisform.tabmenutop.command4.SpecialEffect = 1
thisform.tabmenutop.command5.SpecialEffect = 1

DO CASE
CASE this.Value = 1
thisform.tabMenu.page1.ZOrder
thisform.tabmenutop.command1.SpecialEffect = 0
CASE this.Value = 2
thisform.tabMenu.page2.ZOrder
thisform.tabmenutop.command2.SpecialEffect= 0
CASE this.Value = 3
thisform.tabMenu.page3.ZOrder
thisform.tabmenutop.command3.SpecialEffect = 0
CASE this.Value = 4
thisform.tabMenu.page4.ZOrder
thisform.tabmenutop.command4.SpecialEffect = 0
CASE this.Value = 5
thisform.tabMenu.page5.ZOrder
thisform.tabmenutop.command5.SpecialEffect = 0
ENDCASE

Las primeras lineas ponen todos los botones en PLAIN, y el DO CASE se


encarga de abrir la pestaña correspondiente y aplicar un efecto al boton, para
indicar que esta seleccionado.

Luego en cada pestaña que contiene un grupo de comandos, hago lo


mismo abriendo las formas correspondientes.

La ventana le he dejado los bordes para que el usuario pueda agrandarla


o maximizarla. Los botones de minizar, maximizar y cerrar los controlo
mediante codigo y cada icono esta en una carpeta de iconos. Y eso es todo.
Si quiero cambiar un poco el orden, puedo quitar o agregar botones.
Ejemplo:
En este caso, tengo 3 categorias para mantenimiento, copiadas desde la
primera.

A mi realmente me funciono bastante rapido, por supuesto no genero


codigo, ni es una clase que lo genere, pero se puede hacer. Mas que nada
queria compartirles la idea de un menu con estas caracteristicas partiendo de
una manera visual. Se que los menus tienen mas botones, combobox,
submenus, etc. Pero todo eso tambien se puede crear de manera visual.
Despues de todo, los menus de Office 2007, no son mas que opciones con
pestañas.

He aquí la ventana completa: