8. Diseño de menús
Descripción de un menú
Un menú es uno de los componentes más habituales en los programas Windows. Se basa en un
conjunto de opciones desplegables a partir de una serie de opciones principales, que permiten
organizar el acceso a las diferentes partes de la aplicación. A efectos de programación, cada opción
de
menú es tratada y se maneja de la misma forma que cualquier control dentro del formulario.
9. Sin ser imprescindible su uso, si es útil a nivel organizativo, ya que evita la sobrecarga de controles
en
el formulario. Hemos de tener en cuenta que si no incorporamos un menú, tendremos que utilizar
otro
control, un botón de comando por ejemplo, por cada opción que queramos ejecutar dentro del
formulario, lo que ocupa más espacio y resulta menos estético, debido a la sobrecarga de controles
que
se produciría dentro del formulario.
Lo anteriormente descrito se aplica en programas SDI, ya que si vamos a realizar un programa
MDI, el
uso de un menú para la ventana principal de la aplicación resulta obligatorio, siendo la forma que
tiene
la ventana MDI de invocar a las ventanas secundarias de la aplicación.
Características de un menú
Un menú está compuesto por un conjunto de opciones principales o nivel superior, que se disponen
en
la parte más próxima al título del formulario. De cada opción del nivel principal, se despliega
unconjunto de opciones o menú de nivel inferior dependientes del principal. A su vez, desde las
opciones
de este segundo nivel se pueden seguir abriendo sucesivamente niveles más inferiores.
Aunque la posibilidad de desplegar varios niveles de menús es muy interesante, de forma que
podamos alcanzar un alto nivel de organización, no conviene, sin embargo, hacer un uso abusivo de
esta cualidad, ya que un usuario puede tomar un mal concepto de una aplicación que le obliga a
descender muchos niveles de menús para seleccionar una opción que es muy utilizada a lo largo de
la
aplicación.
Propiedades de un control Menú
Puesto que una opción de menú se maneja como un control más del formulario, podemos afirmar
que
una opción de menú es un objeto con sus propiedades y métodos. De las primeras vamos a ver una
descripción:
Name. Nombre del control.
Caption. Texto que muestra la opción.
Enabled. Valor lógico que habilita o deshabilita la opción. Cuando está deshabilitada, aparece
en gris y el usuario no puede seleccionarla.
Checked. Dato lógico que cuando es verdadero, muestra una marca en la opción de menú,
para informar al usuario de que esa opción está activada.
Visible. Si su valor es False, oculta la opción. Por defecto es True.
Index. Permite definir una opción como parte de un array de controles u opciones de menú.
Esta propiedad es útil para crear nuevas opciones de menú en tiempo de ejecución.
Shortcut. Contiene el valor de una tecla de método abreviado o acelerador de teclado, como
F5 o Ctrl+G. Cuando se define un acelerador, la combinación de teclas aparece junto a la
descripción del menú. La ventaja de un acelerador es que no necesitamos navegar a través de
las opciones del menú para llegar a una determinada. Si la que queremos tiene definido un
acelerador, tecleándolo lanzaremos directamente la opción de ese menú.
WindowList. En un formulario MDI, si damos el valor True a esta propiedad en una opción
de nivel superior, el programa creará de forma transparente al usuario un submenú con las
ventanas que tiene abiertas la aplicación, marcando la ventana activa.
10. En cuanto a métodos, el único disponible para el programador es Click(), que se dispara al
seleccionar
el usuario una opción del menú. Aquí deberemos incluir el código que se ejecutará para la opción de
menú.
El Editor de menús
Para crear un menú en el formulario hemos de hacerlo usando la ventana de edición de menús, la
cual
abrimos de una de las siguientes maneras:
Hacer clic con el botón derecho del ratón dentro del formulario, para visualizar el menú
contextual del mismo. Dentro de este menú tenemos una opción para abrir el editor de menús.
Pulsar el botón Editor de menús en la barra de herramientas de VB.
Seleccionar el menú Herramientas + Editor de menús de VB.
Usar la combinación de teclado Ctrl+E.
Al abrir el editor de menús por primera vez, obtenemos una ventana similar a la que aparece en la
figura 152
Los pasos para crear las opciones del menú son los siguientes:
Introducir el Caption o título de la opción, que es la cadena de caracteres que aparecerá en el
menú. Si deseamos que esta opción tenga una tecla de acceso rápido o hotkey, hemos de situar
el carácter & precediendo a la letra que queramos actúe como hotkey. De esta forma, la letra
aparecerá subrayada en tiempo de ejecución y podremos seleccionar la opción con la
combinación de teclado Alt+hotkey si pertenece al nivel principal. Si es una opción incluida
en un nivel inferior, debemos abrir primero el nivel y después pulsar la tecla de acceso rápido.
Asignar un valor a Name, que es el nombre del control, y nos servirá para hacer referencia a él
dentro del código.
En este punto podemos asignar a la opción algún tipo de variante: habilitarla, marcarla,
ocultarla, asignarle un acelerador de teclado o Shortcut, etc.
11. Completadas todas las propiedades de la opción, pulsamos Siguiente, con lo que pasará a la
parte inferior de la ventana, en la zona de opciones ya creadas
Un aspecto muy importante a tener en cuenta es el nivel en el que vamos a situar la opción. Si
deseamos que esté situada en un nivel inferior, hemos de hacer clic en el botón con la flecha a
la derecha y un grupo de puntos aparecerá en la zona de opciones indicando que esa opción es
de nivel inferior. Cuantos más grupos de puntos haya, mayor profundidad tendrá la opción. De
forma inversa, si queremos que una opción suba de nivel, hemos de hacer clic en el botón con
flecha a la izquierda. Si la opción no tiene puntos, es que pertenece al nivel principal.
Es posible cambiar la posición de una opción, haciendo clic en los botones con las flechas
arriba o abajo la desplazaremos en una u otra dirección.
Pulsando el botón Insertar crearemos una nueva opción vacía entre las opciones ya creadas.
Pulsando el botón Eliminar borraremos la opción actualmente resaltada.
Podemos agrupar diferentes opciones dentro de un mismo menú usando separadores o líneas
divisorias. Simplemente hemos de poner un guión "-" en el Caption de la opción de menú.
Añadir código a una opción de menú
Una vez terminado el diseño del menú, tenemos dos formas de incluir el código que debe ejecutar:
Desde la ventana de diseño del formulario, seleccionar la opción de menú, lo que abrirá la
ventana de código del formulario, situándonos en el método Click(), que como hemos visto
anteriormente es el único disponible para este control.
Abrir la ventana de código del formulario, y buscar nosotros directamente en la lista de
objetos el control a codificar.
Creación de un menú
Vamos a ver una aplicación que contenga un menú en el que sus opciones muestren las propiedades
descritas anteriormente.
Tomamos del grupo de ejemplos la aplicación llamada Menu. Una vez cargada en VB, abrimos su
único formulario frmMenu que dispone de la siguiente estructura de menú:
12. De la misma forma, se puede cambiar la marca de la opción Enviando correo, pulsando el botón
Enviar correo, lo vemos en el código fuente 171.