4D v16.3Gestión de list box jerárquicos |
||
|
4D v16.3
Gestión de list box jerárquicos
Gestión de list box jerárquicos
4D le permite especificar y usar list box jerárquicos. Un list box jerárquico es un list box en el cual el contenido de la primera columna aparece en forma jerárquica. Este tipo de representación se adapta a la presentación de la información, incluyendo los valores repetidos y/o jerárquicamente dependientes (país/región/ciudad...). Sólo los list box de tipo array pueden ser jerárquicos. Los list boxes de tipo jerárquico son una forma de representación particular de los datos pero no modifican la estructura de estos datos (los arrays). Los list box jerárquicos se llenan y manejan exactamente del mismo modo que los list box regulares (ver Gestión programada de los objetos de tipo List box). Para especificar un list box jerárquico, hay tres posibilidades diferentes:
Cuando se abre por primera vez un formulario que contiene un list box jerárquico, por defecto todas las líneas se despliegan. Si este list box se muestra en forma jerárquica (los tres primeros arrays se incluyen en la jerarquía), se obtiene: Los arrays no se ordenan antes de la construcción de la jerarquía. Si, por ejemplo, un array contiene los datos AAABBAACC, la jerarquía obtenida será: > A Para expandir o contraer un "nodo" jerárquico, simplemente haga clic en él. Si presiona Alt+clic (Windows) u Opción+clic (Mac OS) en el nodo, todos sus sub-elementos se expandirán o contraerán. Estas operaciones también pueden realizarse por programación utilizando los comandos LISTBOX EXPAND y LISTBOX COLLAPSE. Un list box jerárquico muestra un número variable de líneas en la pantalla de acuerdo al estado desplegado/contraído de los nodos jerárquicos. Esto no significa, sin embargo que el número de líneas de los arrays varíe. Sólo se modifica la visualización, no los datos. Si estos arrays están representados jerárquicamente, la línea "Quimper" no se mostrará en la segunda línea, sino en la cuarta, debido a las dos líneas de ruptura añadidas: Independientemente de cómo los datos se muestran en el list box (jerárquicamente o no), si quiere cambiar la línea que contiene "Quimper" a negrita, debe utilizar la instrucción Style{2} = bold. Sólo se tiene en cuenta la posición de la línea en los arrays. Este principio se aplica para los arrays internos que se pueden utilizar para administrar:
Por ejemplo, si desea seleccionar la fila que contiene Rennes, debe pasar: ->MiListbox{3}:=True Representación no-jerárquica: Representación jerárquica: Nota: si una o más líneas se ocultan porque sus padres están contraídos, no se seleccionan más. Sólo las líneas que son visibles (ya sea directamente o por desplazamiento) pueden seleccionarse. En otras palabras, las líneas no pueden estar a la vez ocultas y seleccionadas. Al igual que con las selecciones, el comando LISTBOX GET CELL POSITION devuelve los mismos valores para un list box jerárquico y un list box no jerárquico. Esto significa que en los dos ejemplos a continuación, LISTBOX GET CELL POSITION devolverá la misma posición: (3;2). Representación no-jerárquica: Representación jerárquica: Si el usuario selecciona una línea de ruptura, LISTBOX GET CELL POSITION devuelve la primera ocurrencia de la línea en el array correspondiente. En el siguiente caso: ... LISTBOX GET CELL POSITION devuelve (2;4). Para seleccionar una línea de ruptura por programación, debe utilizar el comando LISTBOX SELECT BREAK. Las líneas de ruptura no se tienen en cuenta en los arrays internos utilizados para administrar la apariencia gráfica de los list box (estilos y colores). Sin embargo es posible modificar estas características para las líneas de ruptura vía los comandos de gestión gráfica para objetos (tema ). Sólo debe ejecutar los comandos apropiados en los arrays que constituyen la jerarquía. Dado por ejemplo el siguiente list box (los nombres de los arrays asociados se especifican entre paréntesis): Representación no-jerárquica: Representación jerárquica: En modo jerárquico, los niveles de ruptura no son tenidos en cuenta por los arrayas de modificación de estilo llamados tStyle y tColors. Para modificar el color o el estilo de los niveles de ruptura, debe ejecutar las siguientes instrucciones: OBJECT SET RGB COLORS(T1;0x0000FF;0xB0B0B0) Nota: en este contexto, sólo la sintaxis que utiliza la variable array puede funcionar con los comandos de propiedad de objeto porque los arrays no tienen objeto asociado. Resultado: Cuando todas las líneas de una subjerarquía están ocultas, la línea de ruptura se oculta automáticamente. En el ejemplo anterior, si las líneas 1 a 3 están ocultas, la línea de ruptura "Brittany" no aparecerá. Puede optimizar la visualización y la gestión de los list box jerárquicos utilizando los eventos formulario On Expand y On Collapse. Un list box jerárquico se construye a partir de los contenidos de sus arrays por lo que sólo se pueden mostrar cuando todos los arrays se cargan en memoria. Esto hace difícil la generación de list box jerárquicos de gran tamaño basados en arrays generados a partir de los datos (vía el comando SELECTION TO ARRAY), no sólo por la velocidad de visualización, sino también por el uso de la memoria.
Ver también
Gestión programada de los objetos de tipo List box
|
PROPIEDADES
Producto: 4D
HISTORIA
ARTICLE USAGE
Manual de lenguaje 4D ( 4D v16) |