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 29/68)
Primero Previo Próximo Último

Ejercicio de SYSGUI #6: Botones herramienta (Tools Buttons)

En este ejercicio, introducimos un nuevo tipo de control llamado "botón herramienta". Los botones herramienta son muy utilizados, pero tienen algunas diferencias muy importantes respecto a los push buttons:

BOTONES DE PULSAR son un objeto intrínsico o de Windows
pueden recibir enfoque de teclado
tiene significación especial cuando la navegación de teclado es permitida.
BOTONES HERRAMIENTA son un control de hábito suministrado por BASIS
pueden verse mejor que los botones de pulsar
pueden mostrar un título regular o una imagen de un bitmap
no pueden recibir enfoque de teclado
están excluidos de la orden de navegación de teclado pueden operar normalmente o como un "botón de conmutación"
informa una gran cantidad de detalle en cada evento
son idealmente apropiados para uso en "barras de herramientas"

Para aprovecharnos más del botón herramienta, por favor teclee en la versión modificada del reportero de eventos del Ejercicio #4. Si usted salvó el reportero original de eventos, la única diferencia con el original es que no estamos mostrando los eventos de movimiento de ratón (máscara con $FFFFFEFF$), y una línea 40 que dice 'tbutton' en lugar de 'button'. También usaremos ID 101 en lugar de ID 1, desde ahí no hay forma de usar un botón herramienta para el propósito estándar de que control ID 1 es supuesto a servir. De otra manera, eso es justamente el reportero de eventos del Ejercicio #4.

0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,"Reportero de Eventos",$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'TBUTTON'(101,10,10,50,15,"OK",$$)
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)), 0070:E.X, E.Y
0080 GOTO 60

Lo primero que usted va a notar al correr el programa es que el botón herramienta mira y actúa justamente como el regular botón de pulsar. O lo hace? Bien, conocemos ya que no se comporta de la misma manera si la navegación de teclado estuviera permitida, pero eso es algo mucho más diferente.

Intente hacer click en el botón herramienta algunas pocas veces y mire el reporte de eventos. La información de eventos realmente cambia en dependencia de *donde* usted haga click, dentro del botón. Cuánto útil esto sea depende de su aplicación. Mucho más útil es el hecho que el informe también indica si el control y/o teclas shift están oprimidas durante el click, y cuál botón del ratón es oprimido.

Aún más interesante es el hecho que el botón herramienta pueda ser hecho para operar como un botón conmutador. Para hacer esto, interrumpa y termine el programa (haga click en la ventana de la consola para enfocar, luego de Ctrl-C, y digite END), y haga este pequeño cambio:

0040 PRINT (1)'TBUTTON'(101,10,10,50,15,"OK",$0400$)

Cuando usted lo corra de nuevo, va a notar que el botón herramienta ahora permanece abajo de donde usted hizo click la primer vez, y cambia el estado con cada click. Si usted quisiera el estado inicial del botón que está abajo, use justamente la bandera estándar "inicialmente chequeada". Como usted ve, un botón herramienta cambiable se comporta muy parecido a una caja de chequeo. (Si usted quisiera intentarlo, use justamente $0404$ en lugar de $0400$. Estos medios son "cambiables e inicialmente chequeados").

Mientras el programa está corriendo, intente dar click en el botón algunas veces. Usted va a notar que el estado del conmutador es informado junto con todo lo demás en el parámetro de banderas. El estado del conmutador (E.FLAGS) tiene un valor $10$. De otra manera, todo evento reportado es idéntico, independientemente de si el botón herramienta es cambiable o no.

Primero Previo Próximo Último

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

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