A partir de 4D v17, el contenido de una colección multinivel puede mostrarse fácilmente en diferentes cuadros de lista. Esto significa que puede enlazar varios cuadros de lista para mostrar detalles anidados… ¡sin una sola línea de código! Esto puede lograrse simplemente utilizando un objeto o una colección como fuente de datos para otro cuadro de lista.
Con el nuevo tipo de colección de cuadros de lista, se han añadido las propiedades «Elemento actual « y «Elementos seleccionados «. Tenga en cuenta que la propiedad «Elemento actual « permite obtener un objeto, mientras que la propiedad « Elemento seleccionado» devuelve una colección.
Veamos un ejemplo concreto y veamos cómo podemos mostrar los resultados de un análisis de sangre.
¿Qué hay?
En el primer nivel, tenemos el nombre del paciente, la fecha del examen y el nombre del médico. A continuación, los resultados se clasifican por categorías. Para cada categoría, hay una lista de exámenes con el valor del resultado, el mínimo, el máximo y la unidad.
En cuanto a la estructura de datos, tenemos un objeto con algunos atributos de primer nivel( es decir, nombre, apellido, etc.), así como una colección de objetos de categoría. Luego, para cada objeto de categoría, tenemos una colección de objetos de prueba. En resumen:
{ "lastname": "Beal", "firstname": "Estele", ..., "results": [{ "category": "Metabolic", "test": [ { "name": "Albumin", "value": ... }, { "name": ... }] }, { "category": "Lipoprotein", "test": [ { "name": "HDL", "value": ... }, { "name": ... }] }, {...}] }
El esquema siguiente describe cómo se muestran los resultados en dos cuadros de lista junto a la entrada de objetos. Todo esto… ¡sin una sola línea de código! De hecho, todas las propiedades están definidas en los objetos del formulario, la única parte en la que se necesita algo de codificación es al cargar el resultado. ¡Eso es todo, amigos! ?
Como puedes ver, este ejemplo hace que los resultados de los análisis de sangre sean más fáciles de leer y entender, especialmente cuando los datos incorrectos se resaltan con un toque de color.
Para ello, asociamos el siguiente método Decorate a la expresión meta de la propiedad del cuadro de lista:
If (This.value>(This.max*2))
$0 :=Form.meta.doubleOutOfRange
Else
If ((This.value>This.max) | (This.value<This.min))
$0 :=Form.meta.outOfRange
Else
$0 :=Form.meta.perfectValue
End if
End if