Creación de Menús

Definición un menú:

Un menú es una lista de opciones que se mostraran en pantalla de las cuales el usuario puede seleccionar una a su antojo, en fox existen dos tipos de menús asi:
Menú: Hace referencia al menú que se muestra en una barra, esta puede estar ubicada en la ventana principal o en un formulario de nivel superior




Menú Contextual: Es una lista de opciones que no se encuentra contenida en una barra, puede aparecer en cualquier lugar de la pantalla



Para definir un menú existen dos formas básicas, la primera haciéndolo por el generador y la segunda mediante código, siendo mucho mas fácil mediante el generador.
Para crea un menú mediante el generador seleccione la pestaña “Otro” del Administrador de proyectos, luego seleccione “Menús” y pulse el botón “Nuevo”, en la ventana que aparece seleccione el menú el tipo de menú que desea crear


Una vez seleccionado el tipo de menú, aparecera en pantalla una ventana que contiene los siguientes campos:


Indicador: Hace referencia al nombre del menú, se puede usar “\<” para señalar una letra para seleccionar la opción, así por ejemplo \Salir, si el usuario presiona la “S” (ALT+S según la ubicación) se ejecutara la opción,


Nota: Utilice \< para resaltar una tecla y \- Para ingresar un linea de división Comando: 

Ejecuta un comando Ej: WAIT WINDOW ‘PRUEBA’Acción: Indica la acción que se realizara al seleccionarlo, estas son :
  • Titúlo de menú: Hace el llamado a un menú propio de Fox Ej. _MSM_FILE
  • Submenú: Su nombre lo dice
  • Procedimiento: Permite almacenar un procedimiento en la definición del menú
Opciones: Permite personalizar la opción del menú, las mas usadas son:
  • Etiqueta de la tecla: indica que combinación de teclas activa la opción, si por ejemplo presionas la tecla CTRL+S indica que se activara cuando el usuario presione estas teclas al tiempo.
  • Saltar por: Indica la condición por la cual la opción no se activara, así por ejemplo WEXIST("MiForm") indica que la opción no estará disponible si se encuentra activa la ventana de nombre MiForm
  • Mensaje: Se muestra en la barra de estado cuando el usuario se encuentra sobre la opción
  • Imagen: Puede ser una imagen (bmp 16x16 pix) o puede ser la imagen de un recurso, por ejemplo _mfi_open

Una vez se termine de ingresar todas las opciones que se necesitan se procede a generar el menú. Para generar el menú selecciona la opción “Menú” -> “Generar”


El menu se genera a la ruta especificada, en este caso a "C:\munú2.mpr", el archivo contiene el siguiente código:
SET SYSMENU TO
SET SYSMENU AUTOMATIC

DEFINE PAD _1rk0o3ce5 OF _MSYSMENU PROMPT "\KEY ALT+O, ""
DEFINE PAD _1rk0o3ce6 OF _MSYSMENU PROMPT "\KEY ALT+M, ""
ON SELECTION PAD _1rk0o3ce5 OF _MSYSMENU WAIT WINDOW "Prueba"
ON SELECTION PAD _1rk0o3ce6 OF _MSYSMENU SET SYSMENU TO DEFA
Para ejecutar el menú utilice la instrucción DO asi:
DO "c:\menú2.mpr"
Para hacer referencia a un menú nativ de fox utilice en "Accion" la opcion "Nº de Barra" asi:


El ejemplo anterior muestra como hace el llamado a las opciones del menú edición. "Para descargar el ejemplo pulse aqui" , lo primero que se hizo fue definir un menu ontextual con las respectivas opciones, luego en un formulario de inserto un EditBox, en el metodo MouseDow se agrego el siguiente codigo:



El código anterior ejecuta el menú "CEDICION.MPR" cuando el usuario presione le boton derecho del mause.

Agregar un Menú a un formulario
1. Definimos el menú, según lo necesitemos:


2. Ahora debemos especificar que el menú se mostrara en un formulario de nivel superior, para tal efecto entramos en “Ver” -> “Opciones generales” en el menú principal de Fox



3. Generamos el menú
4. Creamos un formulario y lo definimos como un formulario de nivel superior (Single Document Interface), para eso modificamos la propiedad “ShowWindow” en 2 (Como formulario de nivel superior).


5. Hacemos el llamado al menú que hemos definido desde el método INIT del formulario así:
DO "pruebas\menú1.mpr" WITH THISFORM,.T.
En donde “pruebas\menú1.mpr” es la ruta del menú ya generado




Listo!!!
Ya agregamos un menú a un formulario de nivel superior, lo cual nos abre un mundo de posibilidades. Como resultado tendremos un formulario así:



3 comentarios: