... 0300 IF e.code$="B" THEN GOTO pasar
0310 REM
0320 REM "Ctrl actividad en lista de la izquierda (id=101)
0330 IF e.id<>101 THEN GOTO 0370
0340 LET a$=CTRL(1,101,1),radio=DEC(CTRL(1,101,2)); PRINT a$,radio
0350 FOR ven=0 TO 2; PRINT (1)'CONTEXT'(ven); PRINT (1)'LISTUNSEL'(102,-1);
IF
0350: context_act<>ven THEN PRINT (1)'LISTUNSEL'(101,-1)
0355 NEXT ven; GOTO main_loop
0360 REM
0370 REM "Ctrl actividad en lista de la derecha (id=102)
0380 IF e.id<>102 THEN GOTO main_loop
0390 LET a$=CTRL(1,102,1),radio=DEC(CTRL(1,102,2)); PRINT a$,radio
0400 FOR ven=0 TO 2; PRINT (1)'CONTEXT'(ven); PRINT (1)'LISTUNSEL'(101,-1);
IF
0400: context_act<>ven THEN PRINT (1)'LISTUNSEL'(102,-1)
0405 NEXT ven; GOTO main_loop
0410 REM
0420 pasar:
0425 FOR context_fte=0 TO 2
0427 PRINT (1)'CONTEXT'(context_fte)
0430 LET ven=101
0435 REM "Obtiene indice de Ítems seleccionados
0440 LET ven$=CTRL(1,ven,2); IF ven$="" THEN IF ven=101 THEN LET ven=ven+1;
GO
0440:TO 0440 ELSE GOTO 0445
0442 EXITTO 0448
0445 NEXT context_fte; GOTO main_loop
0447 REM
0448 PRINT (1)'CONTEXT'(context_act)
0450 LET a$=CTRL(1,ven,3,context_fte); PRINT (1)'LISTADD'(203-ven,-1,DEC(a$(1,
0450:2))),CTRL(1,ven,1,context_fte)
0455 PRINT (1)'CONTEXT'(context_fte)
0460 FOR a=LEN(ven$)-1 TO 1 STEP -2
0470 PRINT (1)'LISTDEL'(ven,DEC(ven$(a,2)))
0480 NEXT a
0490 GOTO main_loop
Cuando la cantidad de ítems
a ser cargados en un LISTBOX, LISTEDIT, LISTBUTTON, o en un GRID es mucha, ocurre
un cierto parpadeo en el objeto que resulta un poco molesto a la vista. Si le
interesa hacer desaparecer el parpadeo, tiene que hacer uso de los mnemónicos
LISTSUSPEND y LISTRESUME. Se coloca el primero exactamente antes
de iniciar la carga de los ítems y el segundo al finalizar la carga.
Ejercicio de SYSGUI #9: Controles de barra de desplazamiento
(Scroll Bars)
En ejercicios previos, hemos vistos
como las barras de control pueden servir como una parte integral de otro control
(ej: cajas de lista), y como pequeñas decoraciones de ventana (ver la parte
oculta de una superficie dibujada). Ahora consideraremos el uso directo de barras
de desplazamiento como un control único.
Antes de que pueda ser usada,
una barra de desplazamiento tiene que ser asignada a un rango y una proporción.
El rango especifica el ancho de la pista de scroll. La proporción especifica
una fracción entera del ancho de la pista e indica cuánto se deslizará parte
del control. El rango "reasigna un espacio" en la
pista del scroll, semejante a la proporción que se coge del rango total. Por
ejemplo, si el rango va desde 1 al 10 y la proporción es de 3, entonces la barra
de desplazamiento puede tener 7 posiciones: del 1 al 7. Para tener una proporción
de 3 y 10 posibles posiciones, sería necesario tener un rango con 3 valores
más en el borde superior: 1 hasta 13.
|