4D v12.4Gestión de los objetos de tipo List box |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v12.4
Gestión de los objetos de tipo List box
|
Comandos Prop. de los objetos | Objeto | Columnas | Título de las columnas |
OBJECT MOVE | X | ||
OBJECT GET COORDINATES | X | ||
OBJECT SET FILTER | X | ||
OBJECT SET FORMAT | X | ||
OBJECT SET ENTERABLE | X | ||
OBJECT SET CHOICE LIST NAME | X | ||
OBJECT SET TITLE | X | ||
OBJECT SET COLOR | X | X | |
OBJECT SET RGB COLORS | X | X | |
OBJECT SET FONT | X | X | X |
OBJECT SET FONT SIZE | X | X | X |
OBJECT SET FONT STYLE | X | X | X |
OBJECT SET ALIGNMENT | X | X | X |
OBJECT Get alignment | X | X | X |
OBJECT SET VISIBLE | X | X | X |
OBJECT SET SCROLLBAR | X | ||
OBJECT GET BEST SIZE | X | X | X |
Notas:
Es posible añadir un método de objeto al objeto list box y/o a cada columna de la list box. Los métodos de objeto se llaman en la siguiente orden:
1. Método de objeto de cada columna
2. Método de objeto del list box
El método de objeto de la columna recibe los eventos que ocurren en su título.
Cuando el comando OBJECT SET VISIBLE se utiliza con un encabezado, se utiliza en todos los encabezados del objeto List box, sin importar el título definido en el comando. Por ejemplo, la instrucción OBJECT SET VISIBLE(*;"título3";False) ocultará todos los títulos del objeto List box al cual pertenece titulo3 y no únicamente este encabezado.
La función OBJECT Get pointer utilizada con la constante Object with focus u Object current (antiguas funciones Focus object y Self) puede ser utilizada en el método de objeto de un list box o de una columna de list box.
Devuelven un puntero al list box, la columna(1) list box o la variable del encabezado en función del tipo de evento de formulario. La siguiente tabla detalla este funcionamiento:
Evento | Objeto foco | Objeto actual |
On Clicked | list box | columna |
On Double Clicked | list box | columna |
On Before Keystroke | columna | columna |
On After Keystroke | columna | columna |
On After Edit | columna | columna |
On Getting Focus | columna o list box (*) | columna o list box (*) |
On Losing Focus | columna o list box (*) | columna o list box (*) |
On Drop | list box source | list box (*) |
On Drag Over | list box source | list box (*) |
On Begin Drag Over | list box | list box (*) |
On Mouse Enter | list box (**) | list box (**) |
On Mouse Move | list box (**) | list box (**) |
On Mouse Leave | list box (**) | list box (**) |
On Data Change | columna | columna |
On Selection Change | list box (**) | list box (**) |
On Before Data Entry | columna | columna |
On Column Moved | list box | columna |
On Row Moved | list box | list box |
On Column Resize | list box | columna |
On Header Click | list box | encabezado |
On After Sort | list box | encabezado |
(*) Cuando el foco se modifica dentro de un list box, se devuelve a la columna un puntero. Cuando el foco se modifica a nivel del formulario, se devuelve un puntero al list box. En el contexto de un método de objeto de columna, se devuelve un puntero a la columna.
(**) No ejecutado en el contexto de un método de objeto de columna.
(1) Cuando se devuelve un puntero a una columna, el objeto al cual se apunta depende del tipo del list box. Con un array de tipo list box, la función OBJECT Get pointer devuelve un puntero al array). El mecanismo de punteros de 4D permite conocer el número del elemento del array modificado. Por ejemplo, suponiendo que el usuario modificó la quinta fila de la columna col2:
$Column:=OBJECT Get pointer(Object with focus)
` $Column contiene un puntero a col2
$Fila:=$Column-> `$Fila igual a 5
En el caso de un list box de tipo selección, la función OBJECT Get pointer devuelve:
El comando OBJECT SET SCROLL POSITION (tema “Propiedades de los objetos") puede utilizarse con un objeto de tipo list box. Ese comando permite desplazar las líneas de la list box para mostrar la primera línea seleccionada o una línea específica.
El comando EDIT ITEM (tema “Gestión de entrada”) le permite pasar a modo edición una celda de un objeto list box.
Cuando se aplica a un listbox en modo selección, el comando REDRAW (tema "Interfaz del usuario") dispara la actualización de los datos mostrados en el list box.
El comando Displayed line number (tema "Selecciones") funciona en el contexto del evento de formulario On Display Detail para un objeto list box.
Eventos de formulario específicos están destinados a facilitar la gestión del list box, en particular con lo relacionado a las operaciones de arrastrar y soltar y ordenar. Para mayor información, consulte la descripción del comando Form event.
El administrar el arrastrar y soltar de datos en list boxes está soportado por los comandos Drop position y DRAG AND DROP PROPERTIES. Estos comandos han sido adaptados especialmente para los list boxes.
Tenga cuidado en no confundir arrastrar y soltar con mover filas y columnas, soportado por los comandos LISTBOX MOVED ROW NUMBER y LISTBOX MOVED COLUMN NUMBER.
Por defecto, la list box administra automáticamente la ordenación estándar de columnas en caso de clic en el encabezado. Una ordenación estándar es una ordenación alfanumérica de valores de la columna, de forma alterna ascendente/descendente con cada clic. Todas las columnas siempre se sincronizan automáticamente.
Puede evitar las ordenaciones de usuario estándar deseleccionando la propiedad “Ordenable” del list box.
Por defecto, el list box maneja automáticamente las ordenaciones estándar de columnas en caso de clic en el encabezado. Una ordenación estándar es una ordenación alfanumérica de los valores de la columna, alternamente ascendente/descendente con cada clic sucesivo. Todas las columnas siempre se sincronizan automáticamente.
Usted puede prohibir ordenar al usuario estándar deseleccionando la propiedad "Ordenable" para el listbox.
Nota: la propiedad “Ordenable” únicamente afecta la ordenación del usuario estándar; el comando LISTBOX SORT COLUMNS no tiene en cuenta esta propiedad.
El valor de la variable asociada al título de la columna le permite administrar información adicional: la ordenación actual de la columna (lectura) y la visualización de la flecha de ordenación.
Es posible fija el valor de la variable (por ejemplo, Titulo2:=2) para “forzar” la visualización de la flecha de ordenación. La ordenación de la columna misma no se modifica en este caso; está en manos del desarrollador manejarlo.
La gestión de selecciones se efectúa de manera diferente para los list box de tipo array y de tipo selección.
• List box de tipo selección: las selecciones son administradas por un conjunto llamado "Highlight Set". Este conjunto se define en las propiedades del list box. Es mantenido automáticamente por 4D: si el usuario selecciona una o más filas en el list box, el conjunto se actualiza inmediatamente. Por otra parte, también es posible utilizar los comandos del tema "Conjuntos" con el fin de modificar por programación la selección del list box.
• List box de tipo array: el comando SELECT LISTBOX ROW puede utilizarse para seleccionar por programación una o más filas del list box.
La variable asociada al objeto List box se utiliza para obtener, fijar o almacenar las selecciones de filas del objeto.
Esta variable corresponde a un array de booleanos que es creada y mantenida automáticamente por 4D. El tamaño de este array se determina por el tamaño del list box: contiene el mismo número de elementos que el array más pequeño asociado a las columnas.
Cada elemento de este array contiene True si la fila correspondiente se selecciona y de lo contrario False. 4D actualiza los contenidos de este array dependiendo de las acciones del usuario. A la inversa, usted puede modificar el valor de los elementos de este array para modificar la selección en el list box.
Por otra parte, no es posible insertar o borrar filas en este array; tampoco es posible digitar filas nuevamente.
Nota: el comando Count in Array puede utilizarse para conocer el número de las filas seleccionadas.
Por ejemplo, este método permite invertir la selección de esta primera fila del list box (tipo array):
ARRAY BOOLEAN(tBListBox;10)
` tBListBox es el nombre de la variable asociada al list box en el formulario
If(tBListBox{1}=True)
tBListBox{1}:=False
Else
tBListBox{1}:=True
End if
Es posible imprimir list boxes a partir de 4D v12. Están disponibles dos modos de impresión: modo previsualización, el cual puede permite imprimir un list box como un objeto de formulario y el modo avanzado, permite controlar la impresión del objeto list box mismo dentro del formulario. Note que la apariencia "Impresión" está disponible para los objetos list box en el editor de formularios.
La impresión de un list box en modo previsualización consiste en imprimir directamente el list box con el formulario que lo contiene utilizando los comandos de impresión estándar o el comando de menú Print. El list box se imprime como está en el formulario. Este modo no permite controlar con precisión la impresión del objeto; en particular, no permite imprimir todas las líneas de un list box que contenga más líneas de las que pueda mostrar.
En este modo, la impresión de los list box se efectúa por programación, vía el comando Print object. Por lo tanto, sólo los list box presentes en los formularios proyecto pueden imprimirse en modo avanzado. El comando LISTBOX GET PRINT INFORMATION se utiliza para controlar la impresión del objeto.
En este modo:
Producto: 4D
Tema: List Box
Gestión de list box jerárquicos