Seleccionar desde macro un nodo de un treecontrol

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
colectivohedera
Mensajes: 3
Registrado: Lun Mar 20, 2023 8:13 pm

Seleccionar desde macro un nodo de un treecontrol

Mensaje por colectivohedera »

Hola a todos. Este es mi primer post en el foro aunque ya llevo bastante tiempo consultando dudas aquí y ha sido de inestimable ayuda, así como los libros de Mauricio, no solo los de macros, también el de writer.
Me he decidido a escribir porque me he topado con una dificultad que no logro superar y tampoco encuentro apenas documentación.

Necesito seleccionar desde una macro un nodo de un treecontrol ya creado. Se trata de un árbol muy grande, por lo que, además de la búsqueda jerárquica por el árbol, estoy implementando un buscador que localiza el nodo deseado en la BDD. Lo que necesito es activar ese nodo en el árbol.

Después de probar muchos caminos, creo que la única opción es mediante el método "select" del treeControl, pero no logro que me funcione y la documentación no puede ser más escueta. He probado a crear el nodo idéntico al creado en el momento de insertarlo en el árbol (incluido el DataValue) pero el resultado es IllegalArgumentException.

La sintaxis es la siguiente:
wSeleccionado=ctlArbol.select(wNodo)
donde wSeleccionado es un booleano, ctlArbol es el treeControl y wNodo es un MutableTreeNode con los mismos datos que el nodo del árbol que quiero seleccionar.

Un detalle que quizás tenga relevancia es que al ejecutar la sentencia se dispara el listener "selectionChanged" y es al terminar la ejecución y volver a la sentencia cuando salta el error.

Si alguien puede aportarme alguna ayuda en forma de ejemplo, documentación o consejo, lo agradecería enormemente.
Juan Carlos
Libreoffice 7.0.4.2 sobre Ubuntu 20.04
colectivohedera
Mensajes: 3
Registrado: Lun Mar 20, 2023 8:13 pm

Re: Seleccionar desde macro un nodo de un treecontrol

Mensaje por colectivohedera »

Con la ayuda de chatgpt he llegado a la conclusión de que no hay una forma sencilla de acceder a un nodo del treeControl, al menos no con la versión de libreoffice que uso (7.5.1.2). Según chatgpt es porque mi instalación no es compatible con cierta interface del treeControl, pero los métodos que me dice de usar no los encuentro en ninguna versión de las interfaces de treeControl.

Pensaba que sí que se podría porque en Access sí que se puede acceder a cualquier nodo por una clave que se define en el momento de insertarlo en el árbol.

Al final he implementado un mecanismo de acceso al nodo que me interesa navegando por el árbol. No lo pongo aquí porque es dependiente de las peculiaridades de mi árbol, no es una solución general.
Libreoffice 7.0.4.2 sobre Ubuntu 20.04
Responder