Saltar al contenido principal
Versión: 21 R2 BETA

List Box Object

List box de tipo array

En un list box de tipo array, cada columna debe estar asociada a un array unidimensional 4D; se pueden utilizar todos los tipos de array, a excepción de los arrays de punteros. El número de líneas se basa en el número de elementos del array.

Por defecto, 4D asigna el nombre "ColumnX" a cada columna. You can change it, as well as other column properties, in the column properties. The display format for each column can also be defined using the OBJECT SET FORMAT command.

Los list boxes de tipo array pueden mostrarse en modo jerárquico, con mecanismos específicos.

Con los list box de tipo array, los valores introducidos o mostrados se gestionan utilizando el lenguaje 4D. También puede asociar una lista de opciones con una columna para controlar la entrada de datos. The values of columns are managed using high-level List box commands (such as LISTBOX INSERT ROWS or LISTBOX DELETE ROWS) as well as array manipulation commands. Por ejemplo, para inicializar el contenido de una columna, puede utilizar la siguiente instrucción:

ARRAY TEXT(varCol;size)

También puede utilizar una lista:

LIST TO ARRAY("ListName";varCol)

Atención: cuando un objeto List box contiene varias columnas de diferentes tamaños, sólo se mostrará el número de elementos del array (columna) más pequeño. Debe asegurarse de que cada array tenga el mismo número de elementos que los demás. Además, si una columna del list box está vacía (esto ocurre cuando el array asociado no fue declarado o dimensionado correctamente con el lenguaje), el list box no muestra nada.

List box de tipo selección

En este tipo de list box, cada columna puede estar asociada a un campo (por ejemplo [Employees]LastName) o a una expresión. La expresión puede basarse en uno o más campos (por ejemplo, [Employees]FirstName+" "[Employees]LastName) o puede ser simplemente una fórmula (por ejemplo String(Milliseconds)). La expresión también puede ser un método proyecto, una variable o un elemento de array. You can use the LISTBOX SET COLUMN FORMULA and LISTBOX INSERT COLUMN FORMULA commands to modify columns programmatically.

A continuación, el contenido de cada línea se evalúa en función de una selección de registros: la selección actual de una tabla o una selección temporal.

En el caso de un list box basado en la selección actual de una tabla, cualquier modificación realizada desde la base de datos se refleja automáticamente en el list box, y viceversa. Por lo tanto, la selección actual es siempre la misma en ambos lugares.

List box colección o entity selection

En este tipo de list box, cada columna debe estar asociada a una expresión. El contenido de cada línea se evalúa entonces por elemento de la colección o por entidad de la selección de entidades.

Cada elemento de la colección o cada entidad está disponible como un objeto al que se puede acceder a través de la palabra clave This. Una expresión de columna puede ser una ruta de propiedad, un método proyecto, una variable o cualquier fórmula, accediendo a cada entidad u objeto elemento de colección a través de This, por ejemplo This.<propertyPath> (o This.value en caso de una colección de valores escalares). La expresión también puede ser un método proyecto, una variable o un elemento de array.

Cuando la fuente de datos es una entity selection, cualquier modificación realizada del lado del list box se guarda automáticamente en la base de datos. Por otro lado, las modificaciones realizadas en la base de datos son visibles en el list box después de que se hayan recargado las entidades modificadas.

nota

Cuando se eliminan entidades, sus referencias permanecen en la selección de entidades con un valor undefined, por lo que aparecen filas en blanco en el list box. En este caso, puede llamar a la función .clean() para obtener una nueva selección de entidades pero sin las referencias de entidades eliminadas.

Cuando la fuente de datos es una colección, toda modificación realizada en los valores del list box se refleja en la colección. Cuando la fuente de datos es una colección, toda modificación realizada en los valores del list box se refleja en la colección. Por ejemplo:

myCol:=myCol.push("new value") //mostrar el nuevo valor en el list box

Propiedades soportadas

Las propiedades soportadas dependen del tipo de list box.

PropiedadList box arrayList box selecciónList box colección o entity selection
Color de fondo alternoXXX
Color de fondoXXX
NegritaXXX
Expresión del color de fondoXX
Estilo de línea de bordeXXX
InferiorXXX
ClaseXXX
Colección o entity selectionXX
Redimensionamiento automático de columnasXXX
Elemento actualX
Posición actual del elementoX
Fuente de datosXXX
Nombre del formulario detalladoX
Mostrar encabezadosXXX
Mostrar pies de páginaXXX
Doble clic en la filaX
ArrastrableXXX
SoltableXXX
EnfocableXXX
FuenteXXX
Color de fuenteXXX
Expresión de color de fuenteXX
Tamaño de fuenteXXX
Altura (list box)XXX
Altura (encabezados)XXX
Altura (pies de página)XXX
Ocultar líneas en blanco adicionalesXXX
Ocultar rectángulo de enfoqueXXX
Ocultar resaltado de selecciónXXX
List Box jerárquicoX
Conjunto de resaltadoX
Alineación horizontalXXX
Color de línea horizontalXXX
Relleno horizontalXXX
Barra de desplazamiento horizontalXXX
Tamaño horizontalXXX
ItálicaXXX
IzquierdaXXX
Tabla maestraX
Expresión info MetaX
MétodoXXX
Líneas móvilesX
Selección temporalX
Número de columnasXXX
Número de columnas bloqueadasXXX
Número de columnas estáticasXXX
Nombre del objetoXXX
DerechaXXX
Array de colores de fondo de filaX
Array de control de filasX
Array color de fuente de filaX
Altura de líneaX
Array altura de líneaX
Array de estilo de líneaX
Elementos seleccionadosX
Modo de selecciónXXX
Edición con un solo clicXXX
OrdenableXXX
Acción estándarX
Expresión de estiloXX
SuperiorXXX
TransparenteXXX
TipoXXX
SubrayadoXXX
Variable o ExpresiónXX
Alineación verticalXXX
Color de línea verticalXXX
Relleno verticalXXX
Barra de desplazamiento verticalXXX
Tamaño verticalXXX
VisibilidadXXX
AnchoXXX

Las columnas, los encabezados y los pies de list box soportan propiedades específicas.

Eventos de formulario soportados

Evento formularioPropiedades adicionales devueltas (ver Evento formulario para las propiedades principales)Comentarios
On After Edit
On After Keystroke
On After SortLas fórmulas compuestas no se pueden ordenar.
(por ejemplo, This.firstName + This.lastName)
On Alternative ClickList box array únicamente
On Before Data Entry
On Before Keystroke
On Begin Drag Over
On Clicked
On Close DetailList box Selección actual y Selección temporal únicamente
On CollapseList box jerárquicos únicamente
On Column Moved
On Column Resize
On Data Change
On Delete Action
On Display Detail
On Double Clicked
On Drag Over
On Drop
On ExpandList box jerárquicos únicamente
On Footer ClickList box arrays, selección actual y selección temporal únicamente
On Getting FocusPropiedades adicionales devueltas sólo al editar una celda
On Header Click
On Load
On Losing FocusPropiedades adicionales devueltas sólo cuando la modificación de una celda se completa
On Mouse Enter
On Mouse Leave
On Mouse Move
On Open DetailList box Selección actual y Selección temporal únicamente
On Row MovedList box array únicamente
On Selection Change
On Scroll
On Unload

Propiedades adicionales

Los eventos formulario de los objetos list box o columnas de list box pueden devolver las siguientes propiedades adicionales:

PropiedadTipoDescripción
areatextÁrea de objeto list box ("header", "footer", "cell")
areaNametextNombre del área
columnentero largoNúmero de columna
columnNametextNombre de la columna
footerNametextNombre del pie
headerNametextNombre del encabezado
horizontalScrollentero largoPositivo si el desplazamiento es hacia la derecha, negativo si es hacia la izquierda
isRowSelectedbooleanTrue si la línea está seleccionada, de lo contrario False
newPositionentero largoNueva posición de la columna o línea
newSizeentero largoNuevo tamaño (en píxeles) de la columna o línea
oldPositionentero largoPosición anterior de la columna o línea
oldSizeentero largoTamaño anterior (en píxeles) de la columna o línea
rowentero largoNúmero de línea
verticalScrollentero largoPositivo si el desplazamiento es hacia abajo, negativo si es hacia arriba

Si un evento se produce en una columna o línea "fake" que no existe, se suele devolver una cadena vacía.