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]

Responder a