Para borrar todos los ítems de una lista, use 'LISTCLR'.
A como lo detallamos en la Sección 3, la función CTRL puede
ser utilizada para obtener información de un control de tipo de lista en cualquier
momento. Recordemos que la función CTRL 1 ("Obtener Texto") recupera
el texto de todos los ítems seleccionados en la lista. Intente seleccionar uno
o más ítems y emitir este comando.
PRINT CTRL(1,101,1)
Usted verá el texto de todos los ítems seleccionados en la lista.
Un caracter {linefeed} es añadido después de cada uno excepto del último ítem
listado. Para ver el texto de absolutamente todos los detalles en la lista (seleccionados
o no), use la función de CTRL 7 ("Obtener Todo el Texto"). En este
caso, un caracter de {linefeed} es añadido después de a todos los ítems, incluyendo
el último.
PRINT CTRL(1,101,7)
A veces es más fácil operar con el índice de ítem seleccionado(s)
que con las etiquetas (labels). La función de CTRL 2 ("Obtener Valor")
nos da un código-binario de dos bytes por cada ítem seleccionado. Estos están
concatenados, de modo que la longitud del string es siempre dos veces la cantidad
de ítems seleccionados. Para obtener cada uno de los índices en el string debemos
utilizar la función DEC.
A$=CTRL(1,101,2)
La función de CTRL 3 ("Obtener Cuenta") nos retorna
dos valores binarios de dos bytes consecutivos. El primero nos informa la cantidad
de ítems seleccionados. El segundo nos informa del número total de ítems en
la lista.
A$=CTRL(1,101,3) --> DEC(A$(1,2))
= Cantidad registros seleccionados
DEC(A$(3,2)) = Cantidad de registros en la lista.
Hasta el momento solamente hemos considerado el tipo de control
de una caja de lista. Cambiémonos ahora al 'LISTBUTTON', para lo cual
vamos a cambiar el programa de modo que la línea 40 nos genere un control de
botón de lista, como sigue.
0040 PRINT (1)'LISTBUTTON'(101,10,10,80,80,"",$$)
El botón de lista no puede permitir selecciones
múltiples, de modo que tuvimos que eliminarle la bandera. Por lo demás, el programa
es idéntico. Trate de correrlo y observe la diferencia.
El mnemónico 'LISTSEL' en la línea 45 aún trabaja, así que "Paul"
aparece como la selección inicial. Normalmente, el control del botón de lista
ocupa solamente la porción principal de su rectángulo unificador, pero el tamaño
puede ser más grande (como en este ejemplo tiene 80 x 80 semicaracteres) para
permitir tener espacio para la lista cuando este es activado. Listas de ítems
de doble-click no son posibles, pero selecciones son todavía reportadas como
eventos tipo "l" (ele).
Es por eso que, un botón de lista opera idénticamente a una
caja de lista. Interrumpa el programa e intente practicar con algunos de los
mnemónicos que vio anteriormente, como 'LISTSEL', 'LISTADD', 'LISTDEL', y 'LISTCLR'.
La función CTRL trabaja igual de bien, aun cuando la cantidad de ítems seleccionados
siempre sea 0 o 1.
El control del mnemónico 'LISTEDIT' muestra algo parecido
al 'LISTBUTTON', pero se comporta de otro modo, ya que una entrada de texto
de formato libre puede ser hecha. En muchas formas, el control del 'LISTEDIT'
es un cruce entre una caja de edición y un botón de lista. El programa puede
poblar la lista, pero solamente el usuario puede tomar ítems de la lista y usarlos
para poblar la caja de edición. El programa nunca podrá establecer una selección
actual, pero puede en su lugar forzar texto en una porción de la caja de edición
del control utilizando el mnemónico 'TITLE'.
Por lo tanto tenemos que hacer dos cambios a nuestro programa.
Primero, tenemos que crear una lista de edición en lugar de un botón de lista.
Eso es fácil (cambie la línea 40). Segundo, no podemos utilizar 'LISTSEL' ya
más (eliminar línea 45). Para establecer el contenido inicial del control, vamos
a especificar justamente un título cuando creamos el objeto. La otra opción
sería utilizar el mnemónico 'TITLE'.
0040 PRINT (1)'LISTEDIT'(101,10,10,80,80,"Paul",$$)
DELETE 45
Cuando usted corra el programa, usted va a notar que trabaja
muy igualmente a la forma en que dijimos, con la excepción que usted puede ahora
digitar cualquier cosa en el control. Los eventos del tipo 'l' (ele) no son
reportados por más tiempo, ya que la operación de la lista es solamente una
manera de como los contenidos de control pueden ser cambiados. Los eventos tipo
'f' (enfoque del control de edición) y 'e' (modificación del control de edición)
son reportados en lugar de eso, justamente como estos son reportados para una
caja de edición ordinaria.
|