Hola José,
José Troncoso escribió:
Hola
Estoy tratando de escribir una macro que crea un diálogo sobre la marcha y me
he atascado al llegar a la asignación de macros a los eventos de los
controles.
He encontrado el método registerScriptEvent que permite realizar la asignación
pero opera sobre formularios y no funciona con diálogos. ¿Hay alguna forma
sencilla de realizar la asignación con diálogos usando OOo Basic?
tienes dos formas:
* asignar una macro desde la ventana "Propiedades" - pestaña
"Acontecimientos"
* emplear directamente listeners (busca "CreateUnoListener;función" en
el índice de la Ayuda de OOo Basic [bastante mal traducida])
La primer forma tiene la ventaja de que es más fácil (sólo creas una
subrutina y la asignas al control/diálogo), la desventaja es que no
todos los listeners figuran en la pestaña "Acontecimientos" (además,
para estudiar luego cada método te será difícil encontrar la
correspondencia entre la traducción y la API de OOo, esto sin contar que
la traducción al castellano es bastante esquizofrénica: el nombre de los
eventos en la pestaña NO coincide con el nombre en el diálogo "Asignar
acción" que se abre desde esa pestaña).
El segundo método es más complejo (debes estudiar el nombre de los
métodos, las interfaces, las structs, etc.) pero permite emplear
listeners para los cuales no hay una correspondencia en la pestaña
"Acontecimientos" (por ejemplo, el control tipo árbol requiere listeners
que sólo se pueden asignar en tiempo de ejecución; lo mismo vale para
controles que ni siquiera figuran en el IDE de OOo Basic, como el
Roadmap -
http://www.arielconstenlahaile.com.ar/ooo/docs/ARIEL_OOoBASIC_RoadMap_Dialogo.odt).
Aquí encontrarás un diálogo que suelo emplear de ejemplo:
http://www.arielconstenlahaile.com.ar/ooo/temp/DIALOGO_EVENTOS.odt
Desde luego no te recomiendo que empieces a hacer pruebas copiando y
pegando, buscando código por internet, etc.: de esa forma sólo lograrás
repetir sin llegar a comprender, perdiendo un montón de tiempo en
problemas que tal vez sean muy fáciles de resolver.
La única solución: *ESTUDIAR* == entender qué se está haciendo, en vez
de simplemente copiar y pegar, repetir sin comprender, ...
Para empezar: la guía de OOo Basic en la Wiki contiene un capítulo sobre
diálogos
http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/Dialogs,
en particular el capítulo sobre eventos
http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/Events
Una vez que leas eso, podrás pasar a algo más completo, la Developer's
Guide:
primero el capítulo 12 OpenOffice.org Basic and Dialogs
http://api.openoffice.org/docs/DevelopersGuide/BasicAndDialogs/BasicAndDialogs.xhtml
luego más complejo el capítulo 20 Graphical User Interfaces
http://api.openoffice.org/docs/DevelopersGuide/GUI/GUI.xhtml
Lo más importante: la referencia de la API de OOo, que debe ser tu
Biblia para programar con UNO.
Para lo que buscas, el módulo AWT es escencial:
http://api.openoffice.org/docs/common/ref/com/sun/star/awt/module-ix.html
Una ayuda indispensable es XRay:
http://es.openoffice.org/files/documents/73/3981/XrayTool_es.odt.
Te permitirá examinar cada objeto y ver sus métodos, propiedades,
servicios, interfaces.
Saludos
Ariel.
--
Ariel Constenla-Haile
La Plata, Argentina
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://www.arielconstenlahaile.com.ar/ooo/
"Aus der Kriegsschule des Lebens
- Was mich nicht umbringt,
macht mich härter."
Nietzsche Götzendämmerung, Sprüche und Pfeile, 8.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]