Vamos a repasar
al menos las partes que ya nos son familiares en este programa:
0030 PRINT (1)'WINDOW'(100,100,100,100,"Reportero de eventos",$03$,
0030:$FFFFFFFF$)
Esta línea crea una ventana, como de costumbre. Estamos usando
las banderas de opciones $01$ (cambiar de tamaño) y $02$ (tener una caja de
cierre). El séptimo parámetro es opcional y sirve para enmascarar el evento,
al cual en este caso le pusimos el "Árbol de Navidad" (todos los bits
encendidos), para poder así obtener el máximo reporte de eventos. Esto normalmente
solo es útil para pruebas. Generalmente, usted quisiera un pequeño reporte a
como usted lo pueda tener y lograr aún que su programa haga lo qué usted quiera.
La línea 80 muestra todos los campos en la
estructura del evento. El primer campo, E.CONTEXT, siempre será cero para esta
demostración. El contexto es usado para identificar una ventana particular cuando
el dispositivo de SYSGUI es manipulando en más que una ventana a la vez. Hemos
olvidado todo lo tratado porque hasta el momento no hemos desplegado más que
una ventana.
El campo E.CODE indica el tipo de evento.
Hay muchos tipos de eventos. Algunos que usted podría ver en esta demostración
son:
m ratón movido
X caja de cierre operada
B pulsador de botón operado
F ventana lograda o enfoque perdido
S tamaño de ventana fue establecido o borrado
d botón del ratón está abajo
u botón del ratón está arriba
2 doble click en botón del ratón
El campo E.ID contiene el ID del control
o ventana que está generando el reporte. En esta demostración, usted verá solamente
0 (la ventana) y 1 (el botón).
Los campos restantes (FLAGS, X,
Y) no son siempre usados, pero cuando si lo están, dan el detalle acerca del
evento. Por ejemplo, si un botón de ratón es oprimido {clicked}, FLAGS indica
la condición de las teclas de Ctrl y Shift, y X y Y reportan la posición del
cursor del ratón en el momento del click. Probablemente usted puede observar
fuera de la figura cuáles campos son utilizados para otros tipos de evento.
Una vez que el programa está corriendo,
intente las siguientes acciones.
- mueva el ratón sobre la ventana
- haga click en el botón
- haga click en la caja de cierre
- cambie el tamaño de la ventana
Lo primero que va a notar cuando haga lo anterior, es que hay
tantos mensajes 'm' que es difícil darle seguimiento. Estos son eventos de movimiento
del ratón, y es una buena idea omitir su reporte, aparte de si usted lo necesitara.
Para desactivar ese reporte, debe cambiar la máscara de eventos en la línea
30 debe variar el tercer byte así: $FFFFFEFF$, dejando todos los
otros encendidos.
Va a notar también que cuando el ratón hace click en el botón,
el informe no contiene detalle alguno. Usted no será informado en cual botón
del ratón ocurrió el click, donde fue el click, o la condición de las teclas
de Ctrl y Shift. Hay otro tipo especial de control de botón conocido como TOOL
BUTTON el cual si retorna esa información. (Sepa que botones herramienta y botones
regulares no siempre son intercambiables). Intente cambiar el mnemónico 'BUTTON'
en la línea 40 a 'TBUTTON'. (Todos los parámetros son los mismos). Corra el
programa de nuevo y verá mucho más detalle del reporte (esta vez tipo de evento
'b') cuando el botón del "OK" es presionado.
¡NOTA! Verá que al operar la caja de cierre no hace que la ventana
se aleje. Si este fuera el comportamiento que usted desea, el programa deberá
preguntar por los eventos 'X' para destruir la ventana con 'DESTROY'(0).
|