Continuamos mejorando nuestra aplicación de “Gastos Personales”, de modo que ahora utilizamos la capacidad del ListBox para mostrar datos de forma jerárquica (es decir, con varios niveles de indentación).
Esto nos permitirá ahora mostrar en el ListBox todos los gastos agrupados en cada una de las categorías a las que pertenecen, con la posibilidad de expandir o contraer cada una de las categorías del listado a nuestra voluntad.
Por tanto, ganaremos en organización a la hora de mostrar al usuario las diferentes entradas correspondientes a cada una de las categorías de gasto.
De hecho, el ListBox es uno de los controles de interfaz de usuario más potentes y flexibles de entre los que puedes encontrar en la Librería del IDE de Xojo. Si echas un vistazo a la documentación sobre este componente (https://docs.xojo.com/ListBox), te darás cuenta hasta qué punto puedes personalizar el comportamiento del listado, tanto desde el punto de vista gráfico (recuerda de anteriores capítulos que Graphics es la clase que nos proporciona todo lo necesario para “pintar” nuestra interfaz de usuario), como también de comportamiento.
A lo largo del curso ya hemos viendo algunas de sus capacidades, como por ejemplo la correspondiente a la ordenación de los datos en cada una de las columnas, así como la forma en la que podemos añadir datos a las diferente columnas de una nueva fila, acceder a un dato concreto, etc.
Pues bien, a lo largo de este capítulo nos centraremos en otros de los métodos disponibles en el ListBox, siendo estos los que permiten indicar al ListBox que deseamos añadir una nueva fila de datos con el comportamiento “expandible” mediante el método AddExpandableRow (https://docs.xojo.com/ListBox.AddExpandableRow).
Al hacerlo, esto nos da paso también a la capacidad de añadir los Manejadores de Eventos ExpandRow (https://docs.xojo.com/ListBox.ExpandRow) y CollapseRow (https://docs.xojo.com/ListBox.CollapseRow).
Estos son los eventos que se dispararán en el control cada vez que el usuario haga clic sobre el widget (elemento gráfico) de flecha asociado con cada una de las filas expandibles sobre las que se puede actuar.
Dado que, por ejemplo, en ExpandRow recibimos como parámetro el número de la fila que queremos desplegar será éste el que utilizaremos para rellenar (y hacer así visibles) el resto de filas (o entradas) correspondientes a los gastos de la categoría que acabamos de desplegar.
Otro de los métodos interesantes del ListBox, a la hora de utilizar listados jerárquicos, es RowDepthAt (https://docs.xojo.com/ListBox.RowDepthAt).
Este nos permitirá conocer el valor de indentado, o “profundidad” en la jerarquía del listado, correspondiente al número de fila que pasamos como argumento. Así, por ejemplo, un fila de primer nivel nos devolverá un valor de cero (0), mientras que si la fila está colgando directamente de un nivel superior en la jerarquía nos devolverá el valor uno (1), y así sucesivamente a medida que se va profundizando en la jerarquía de una fila raíz o de primer nivel.
Puede que ahora mismo te suene quizá más complejo de lo que realmente es; pero estoy seguro de que cuando veas el tutorial, y lo pongas tu mismo en práctica, te darás cuenta de que no es así.
¡Seguro que pronto comenzarás a utilizar listados jerárquicos en tus propios proyectos!
Además, cosa importante, no tienes por qué limitarte a utilizar filas desplegables sólo en el primer nivel de la jerarquía, sino que puedes incorporar filas desplegables dentro de la jerarquía de cualquier otra entrada que también sea desplegable.
Un buen ejemplo de este tipo de comportamiento en acción, del que te recomiendo que eches un vistazo, es el que puedes encontrar en el proyecto de ejemplo “FileBrowser” incluido en la carpeta Example Projects > Desktop > Controls > ListBox.
—
Javier Rodríguez
- Xojo Engineer
- Twitter: @xojoes
- Facebook: http://facebook.com/xojoes/
- Descarga la última versión desde www.xojo.com
- Recursos Xojo en Español: https://docs.xojo.com/spanish