¡CUIDADO! El rango del scroll primeramente
tiene que ser establecido, y luego la proporción.
El siguiente programa es el reporteador de
eventos ya conocido, con nuevas líneas: 40, 41 y 42.
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,"Reportador de Eventos",$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'HSCROLL'(101,10,10,80,10,"",$$)
0041 PRINT (1)'SCROLLRANGE'(101,1,13); REM Define inicio y final de la 0041:barra.
0042 PRINT (1)'SCROLLPROP'(101,3); REM El 3 indica el STEP.
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
Corra el programa y observe el comportamiento. El tipo de evento
'p' es reportado siempre que la barra de desplazamiento es reposicionada. El
campo .X retorna la nueva posición. Arrastrando el pequeño cuadro causa el reposicionamiento
directo. Haciendo click en las flechas causa el movimiento de una unidad. Haciendo
click en la pista a continuación del cuadrito causa que el cuadrito pase a "página
arriba" o "página abajo", lo que significa que se mueve por la
cantidad proporcional. 10 posiciones son disponibles, pero desde la proporción
tiene 3, un rango desde 1 hasta 13 es requerido.
¡NOTA! Los límites del rango de scroll pueden
ser cualquier valor desde el -32768 al +32767.
Interrumpa el programa y emita este mnemónico
especial.
PRINT (1)'SCROLLPOS'(101,4)
Noten que la barra de desplazamiento salta inmediatamente a
la posición 4. Ahora mueva la barra de desplazamiento con el ratón y lea su
posición con la función de CTRL 2 ("Obtener Valor").
PRINT DEC(CTRL(1,101,2))
El parámetro $$ de la línea 40 podría ser sustituido por:
$0000$ para ENABLEar la ventana.
$0001$ para DISABLEar la ventana.
$0010$ inicialmente sea invisible.
El mnemónico 'VSCROLL' puede ser usado en el lugar de 'HSCROLL'
para crear una barra de desplazamiento vertical. De otra manera, opera exactamente
igual. Haga la siguiente sustitución en la línea 40.
0040 PRINT (1)'VSCROLL'(101,10,10,10,80,"",$$)
Ejercicio de SYSGUI #10: Controles de Edición multilínea
Para edición de texto más complicada, cuando una simple caja
de edición no lo hace, Visual PRO/5 provee el control de edición multilínea.
El control de edición multilínea permite la edición de una o más líneas de texto
(llamémoslos "párrafos"), cada uno de los cuales pueden ocupar una
o más líneas físicas, cada una hasta un máximo de 256 caracteres. El control
puede tener un borde opcional, opcionales barras de desplazamiento, y pueden
ser usados con cualquier fuente.
Para experimentar con el control de edición
multilínea, vamos a utilizar el programa reporteador de eventos de nuevo. Solamente
la línea 40 es nueva. Quite la 41 y la 42.
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,"Reportador de Eventos",$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'TXEDIT'(101,10,10,80,80,"",$10$)
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 GOTO 60
|