Los mnemónicos para manipular listas como ('LISTADD', 'LISTCLR',
'LISTDEL') aún trabajan, pero algunos mnemónicos para ejecutar selecciones ('LISTSEL',
'LISTMSEL', 'LISTUNSEL') no trabajarán. Para cambiar el estado del control desde
el interior de un programa, usted tiene que utilizar el mnemónico 'TITLE'.
Similarmente, las funciones de CTRL se comportan igualmente
al modo en que trabajan las cajas de edición. La función de CTRL 1 ("Obtener
Texto") lee el texto desde el control. Si se necesitara que un dato actual
sea mostrado en la lista, el programa tendrá que hacer esa determinación por
sí mismo.
Interrumpa el programa y mecanografíe lo
siguiente.
PRINT (1)'TITLE'(101,"Peter")
Podrá notar que aún cuando "Peter" no está en la lista,
se puede poner en la caja, ya sea por acción del programador o del usuario.
PRINT CTRL(1,101,1)
La función de CTRL 1 ("Obtener Texto") muestra el
texto actual en el control. Trate de cambiar nuevamente el contenido del control
con el ratón, y obtenga el valor de CTRL de nuevo. Usted puede ver que siempre
está actualizado.
Los siguientes tres programas son para poner
en práctica el aprendizaje de todo lo aprendido en esta sección. El primero
abre un contexto con dos ventanas o listas de nombres, en donde la idea es marcar
nombres en cualquiera de las listas y poder pasarlos a la otra, al oprimir el
botón llamado PASAR.
0001 REM "Ejerc8a Practica pasando ítems entre 2 listas
de un contexto
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(60,100,200,120,"Cantantes",$03$,$FFFFFEFF$)
0040 REM
0050 PRINT (1)'LISTBOX'(101,10,10,80,80,"",$0400$); REM Lista izquierda
0060 PRINT (1)'LISTADD'(101,-1,"John","Paul","George","Ringo","Madonna",
0060:"M.Jackson","Sting","Pink Floyd","Aaaaa","Bbbbbb","Cccccc")
0070 REM
0080 PRINT (1)'LISTBOX'(102,110,10,80,80,"",$0400$); REM Lista derecha
0090 PRINT (1)'LISTADD'(102,-1,"Maria","Jose","Miguel","Angel","Pablo")
0100 PRINT (1)'TEXT'(105,10,110,180,10,"La idea es marcar y pasar ítems
0100:de una ventana a otra.",$$)
0110 REM
0120 PRINT (1)'BUTTON'(1,88,90,25,15,"Pasar",$$); REM "Define
botón que
0120:servirá para indicar trasiego de ítems de una ventana hacia la otra
0130 DIM e$:TMPL(1)
0135 REM
0140 eventos:
0150 READ RECORD(1,SIZ=LEN(e$))e$
0160 PRINT e.context," ",e.code$,e.id," ",HTA(BIN(e.flags,1)),e.x,e.y
0170 IF e.code$="X" THEN PRINT (1)'DESTROY'; STOP
0180 IF e.code$="B" THEN GOTO pasar
0190 REM
0200 REM "Si hubo actividad en lista Izq. Des-selecciona los de la Der.
0210 IF e.id<>101 THEN GOTO 0250
0220 LET a$=CTRL(1,101,1),radio=DEC(CTRL(1,101,2)); PRINT a$,radio
0230 PRINT (1)'LISTUNSEL'(102,-1); GOTO eventos
0240 REM
...
|