Observe que al chequear el botón de radio de un grupo, causa
que todos los demás botones de radio del grupo se des-chequeen. Esta es la naturaleza
de los botones de radio. El mnemónico 'UNCHECK' no trabaja con los botones de
radio.
Para ver cual es el estado de un grupo de botones de radio,
es necesario utilizar la función 2 de CTRL ("Obtener valor")
en cada uno de los botones en el grupo.
PRINT DEC(CTRL(1,101,2))
PRINT DEC(CTRL(1,102,2))
¡SUGERENCIA! Aún cuando los botones de radio y cajas de chequeo
informen unos eventos del tipo 'c' cada vez que son operados, frecuentemente
es más oportuno esperar a que un botón OK sea presionado, y entonces puedan
ser leídos los botones con la función 2 de CTRL, para determinar cuáles están
chequeados.
Ahora es un buen momento como para introducir
el control GROUPBOX, el cual es una caja que agrupa controles para proveer al
usuario una asociación visual entre estos. No hay reglas reales en cuanto a
su colocación, solamente lineamientos generales.
Añada la siguiente línea al programa para
agregar una caja de grupo alrededor los botones de radio.
0043 PRINT (1)'GROUPBOX'(103,5,0,80,80,"Botones de Radio",$$)
Esto no cambiará el comportamiento del programa,
solamente la apariencia. Las cajas de grupo nunca generan eventos algunos.
¡CUIDADO! Las cajas de grupo aparecen siempre
detrás de otros controles, pero no son transparentes. Obscurecerán cualesquier
ítem dibujado que se superponga en la ventana.
¡CUIDADO! Hay tres modos en que los botones de radio pueden
ser "agrupados", y esto es importante para evitar confundirlos. La
primera forma en que puedan ser agrupados es que sean programados para operar
como un conjunto. Los botones de radio no trabajan hasta que sean agrupados
de esta manera. Esto puede ser hecho con los mnemónicos 'RADIOGROUP' o por la
asignación de los números de ID desde el interior del Editor de Recursos de
BASIS. La segunda forma en que los botones de radio puedan ser agrupados, es
asignando números de ID consecutivos y encendiendo el atributo de la bandera
"group" para todas ellos. Esta forma es solamente para navegación
de teclado, y no afecta el modo en que operan. Esto simplemente causa que podamos
usar la tecla Tab para tratar todo el grupo de Botones de Radio (o cajas de
chequeo, en cuanto a eso) como un conjunto, en función de navegación. La tercer
forma de "agrupar" botones de radio es visualmente, dibujando un control
de caja de grupo alrededor a ellos. Esto no tiene efecto en la operación del
programa y es solamente para beneficio del usuario. En la mayoría de los programas,
los tres métodos de agrupar son usados en acuerdo, pero es importante entender
cuáles son requeridos y cuáles no, y como aplicar cada método.
Algo que no se controla, como la caja de grupo, es el control
de texto estático. Es creado con el mnemónico 'TEXT', y simplemente causa un
mensaje de texto (el título del control) que aparece en la ubicación prescrita.
Inténtelo adicionando la siguiente línea al programa.
0044 PRINT (1)'TEXT'(104,10,90,50,15,"Hola",$$)
El uso más común de controles de texto estáticos
es el etiquetado para controles que no muestran sus títulos, como cajas de listas,
barras de desplazamiento, etc. Estos pueden ser utilizados libremente, pero
usted debería ser consciente de que, como las cajas de grupo, no son transparentes.
Ejercicio de SYSGUI #8: Controles de Listas
Existen tres tipos de controles que permiten al usuario escoger
ítems de una lista. El más básico de estos es el LIST BOX. Este es mostrado
como una caja con una barra de desplazamiento vertical. Dentro de la caja tenemos
varios ítems de texto, que pueden ser "seleccionados" por el usuario.
Dependiendo del tipo de caja de lista, el usuario puede seleccionar solamente
un ítem, o algún número de ítems, de la lista. A veces un click, y más frecuentemente
un doble click en un ítem de la lista, puede provocar una acción especial a
tomar.
Los otros tipos de controles de lista son
el LIST BUTTON y el LIST EDIT. Ambos son mostrados como una caja
de edición con un botón a continuación de esta. Presionando el botón se activa
una lista, y seleccionar un ítem en la lista causa su selección para ser mostrado
en la caja de edición, y la lista se desactiva. En el control de botón de lista,
solamente selecciones de la lista pueden ser hechas, mientras que el control
de la lista de edición permite al usuario teclear una entrada libremente en
la caja de edición, así como para seleccionar un ítem desde la lista.
Este es nuestro bien gastado
programa reportero de eventos, con una nueva línea 40 y 41.
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)'LISTBOX'(101,10,10,80,80,"",$$)
0041 PRINT (1)'LISTADD'(101,-1,"John","Paul","George","Ringo")
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 IF E.CODE$<>"X" GOTO 60
|