Portada
Banner
Portada Foros Manuales Enlaces Email
clear1x1.gif clear1x1.gif clear1x1.gif
clear1x1.gif
clear1x1.gif

Portada
Foros
Manuales
Enlaces
Distribuidores
Precios
Sugerencias

Contacto

 

clear1x1.gif clear1x1.gif
 Guía rápida de inicio al GUI de Visual Pro/5 (Parte 43/68)
Primero Previo Próximo Último

Ejercicio de SYSGUI #11: Menús (con revisión 1.0x)

Las ventanas de SYSGUI pueden tener barras de menú. La forma de hacerlo es activando la bandera "tener barra de menú" ($0800$) cuando se crea la ventana, y luego usando el mnemónico ‘SETMENU’ para reemplazar el menú fijo asumido por omisión para su nuevo menú.

He aquí el programa reporteador de eventos del Ejercicio #4, el cual tiene la bandera "tener barra de menú" activada. También hemos cambiado el botón de pulsar en una caja de edición, para demostrar que el tablero del menú funcionará posteriormente. (sólo las líneas 30 y 40 han sido cambiadas).

0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,"Reportador de Eventos",$0803$,
0030:$FFFFFEFF$)
0040 PRINT (1)'EDIT'(101,10,10,50,15,"",$$)
0050 DIM E$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 PRINT E.CONTEXT,"", E.CODE$, E.ID,"", HTA(BIN(E.FLAGS,1)), E.X, E.Y
0080 GOTO 60

Trate de correrlo así como está. Usted notará que obtiene el menú fijo asumido por omisión. Hasta contiene un ítem, que es chequeable. Intente operarlo y observe los eventos del comando de menú ('C'). El valor $04$ en la bandera es la condición de chequeado, y aplica solamente para ítems de menús chequeables. El número que usted ve en el campo de ID indica que comando de menú es enviado. Los números en el menú asumido por omisión no tienen significado especial.

Obviamente, para hacer cualquier cosa útil vamos a necesitar nuestro propio menú. Trate de adicionar las siguientes líneas de código y córralo de nuevo. Considere la coma que va al final de la línea 41 y el uso de WRITE en lugar de PRINT en las líneas restantes. Note también el espacio antes la palabra "Exit" y las comas dentro de comillas.

0041 PRINT (1)'SETMENU',     <---   Poner coma del final
0042 WRITE (1)"File,1,,"+$0A$+" Exit,2,,"+$0A$

El mnemónico 'SETMENU' prepara el canal para recibir un menú. El menú mismo consiste de una línea de texto por cada ítem del menú, indentado con espacios antepuestos para mostrar el nivel en la jerarquía. El menú es terminado con una línea en blanco. En el ejemplo mínimo de arriba, la barra del menú contendrá una opción única, la del menú de Archivo. El menú de Archivo activado contiene a su vez un ítem, con opción de Salir (Exit). Observe que "Exit" está indentado, para indicar que debe aparecer dentro de la opción "File" del menú. Finalmente, las comillas del final ("") proveen un {linefeed} extra para terminar el menú.

Cada ítem u opción del menú consiste de cuatro parámetros separados por comas.

Write (1)"Ítem, Etiqueta, Acelerador, Bandera"
     - Item: generalmente se usa para el nombre que va a llevar la opción.
     - Etiqueta:  se usa para IDentificar la opción
     - Acelerador
     - Bandera: es para dar condiciones a la opción: S, C, U, D.

El primero es el ítem con el título del menú, con espacios antepuestos para especificar el lugar en la jerarquía de los ítems. El segundo campo es para el ítem de "etiqueta" (tag). La etiqueta es justamente un número utilizado para identificar ese ítem. Los tags de menú son controles IDs muy usados, excepto que son usados de otro modo, de manera que la existencia de un control con el mismo número como una etiqueta de menú no provocará un problema. El tercer campo es donde cualquier tecla de acelerador puede ser especificada. El cuarto campo puede contener banderas especiales acerca de esos ítems del menú.

Corra el programa de nuevo y note la apariencia del menú "File", con el comando "Exit" debajo. Cuando el comando "Exit" es seleccionado, unos eventos tipo 'C' llegan con el campo de ID igual a 2, que es la etiqueta del comando "Exit". Cualquier número desde 1 al 31999 puede ser usado para tags o etiquetas de menú. Del número 32000 en adelante están reservados para uso de BASIS. Actualmente solamente 3 de esas etiquetas de menú son reservadas. Estos son los comandos para cortar (32027), copiar (32028) y pegar (32029) en el tablero.

Primero Previo Próximo Último

Portada -- Foros -- Manuales -- Enlaces-- Sugerencias
Para comentarios: webmaster@essnet.com

clear1x1.gif
clear1x1.gif
clear1x1.gif
Portada Email Foros