[RESUELTO] Abrir Formulario por codigo -- excelente Mauricio

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
jvdeoli
Mensajes: 6
Registrado: Dom Mar 14, 2010 4:26 pm

[RESUELTO] Abrir Formulario por codigo -- excelente Mauricio

Mensaje por jvdeoli »

Muchas gracias Mauricio, tu indicación es como siempre exacta
gracias nuevamente
sLs



Tengo un problema que no he podido resolver,
Si abro el formulario desde openoffice del menu abrir, se ejecuta correctamente, un procedimiento en el evento abrir,
y el comportamiento es normal,
Pero desde un macro que lo unico que hace es abrir el formulario deja de funcionar, muestra todos los controles pero
no responde a los eventos.

ejemplo de la funcion que abre el formulario,
sub abrir

openDocument(convertoUrl("c:\oo3\formulario.odt"), noArg())

end sub
tengo los macros seteados en nivel bajo, el procedimiento esta en una libreria personal y ejecuta otro de la libreria tools de openoffice que se abre antes de ejecutar el codigo, todo parece funcionar pero
no responde a ningun evento. Si realizo una recarga de documento funciona correctamente,

No tengo ni idea por donde pueda estar el problema, agradezco cualquier sugerencia para ver de solucionarlo

Muchas gracias
Última edición por jvdeoli el Vie Abr 02, 2010 1:25 am, editado 1 vez en total.
OpenOffice 3.2-OpenSuSe 11.3
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Abrir Formulario por codigo

Mensaje por mauricio »

Hola...

Creo que hay una confusión de nombres, ¿a que llamas formulario?, por que lo que estas intentando abrir es un archivo de Writer, un formulario por si solo no puede existir, estos, están incrustados "dentro" de los documentos, con abrir el documento que lo contiene "deberías" de ver y usar el formulario respectivo. Ahora, para abrir el documento, el siguiente código lo abre sin problemas.

Código: Seleccionar todo

Sub AbrirDocumento()
Dim sRuta As String
Dim mArg()
Dim oDocumento As Object

        'Reemplaza esta ruta por la ruta de tu archivo
        sRuta = ConvertToUrl( "/home/mau/formulario.odt" )
        oDocumento = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mArg() )

End Sub
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
jvdeoli
Mensajes: 6
Registrado: Dom Mar 14, 2010 4:26 pm

Re: Abrir Formulario por codigo

Mensaje por jvdeoli »

Mauricio gracias por responder.

El formulario esta dentro del documento que abro, pero no responde a los eventos por mas que cargue todos los
controles correctamente,

dentro del documento esta el formulario, el mismo tiene una libreria para completar los controles de datos y
el manejo de la base de datos y toda la logica contra la base de datos.

TODO FUNCIONA si lo abro desde el menu archivo de Openoffice, carga los datos, consulta a la base de datos
y responde a los movimientos pero si ejecuto el codigo desde una macro que me abra el archivo, lo abre sin
problemas, carga todos los controles pero me lo muestra como si no tuviera programado toda la logica de controles

El formulario tiene una consulta a 3 tablas, y un procedimiento "abrir_formulario" que esta setado en el evento
"Abrir Documento", del mismo archivo, repito si voy al archivo y hago doble click, o si voy al Menu Archivo y abrir
documento - FUNCIONA PERFECTO, pero si el documento se abre de un procedimiento no logro que funcione hasta
que voy al menu y recargo el archivo.

No tengo ni idea porque es este comportamiento, si se te ocurre cualquier cosa para probar te agradeceria mucho

sLs
OpenOffice 3.2-OpenSuSe 11.3
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Abrir Formulario por codigo

Mensaje por mauricio »

Hola...

Cuando abres un archivo por código, de forma predeterminada las macros están deshabilitadas, tienes que indicarle que se abra con las macros habilitadas de la siguiente manera:

Código: Seleccionar todo

Sub AbrirDocumento()
Dim sRuta As String
Dim mArg(0) As New "com.sun.star.beans.PropertyValue"
Dim oDocumento As Object

	sRuta = ConvertToUrl( "/home/mau/formulario.odt" )
    mArg(0).Name = "MacroExecutionMode"
    mArg(0).Value = 4
    oDocumento = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mArg() )

End Sub
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder