Hola, disculpa la tardanza pero no he leído mensajes de la lista en una
semana
[EMAIL PROTECTED] escribió:
Saludos compañeros:
Probando el ejemplo de la ayuda para mostrar un diálogo me da error.
debes tener bastante cuidado con los ejemplos de la Ayuda para OOo Basic
pues en varios casos hay ERRORES que son HORRORES
Código:
Sub MostrarDialogo1
BasicLibraries.LoadLibrary("Tools")
oDialog1 = LoadDialog("Standard", "Dialog1")
oDialog1.Execute()
End Sub
El error aparece como...
Error de ejecución de Basic
Se ha producido una excepción
Type: com.sun.star.container.NoSuchElementException
Este tipo de excepción "is thrown by child access methods of
collections, if the addressed child does not exist."
http://api.openoffice.org/docs/common/ref/com/sun/star/container/NoSuchElementException.html
Es decir, cuando intentas acceder a un elemento inexistente de un
contenedor o colección.
El diálogo está creado y el nombre es correcto.
Aquí se necesita saber con más detalle qué estás haciendo:
* ¿el diálogo está en la biblioteca Standard de un documento o de "Mis
macros"?
* la macro que crea el diálogo, ¿está dentro de un documento, o en una
biblioteca de "Mis macros"?
Porque si el diálogo está creado, y el nombre de la biblioteca y el del
diálogo son correctos, esa excepción indica que no ha podido cargar la
biblioteca en la cual se encuentra el diálogo, y por ende te indica que
NO EXISTE TAL ELEMENTO (el diálogo, o la biblioteca).
Para crear el diálogo estás empleando una función de la biblioteca Tools
de las macros de OOo. Debes estudiarla para ver si estás pasando mál los
parámetros (sobre todo el parámetro opcional que indica el tipo de
contenedor de bibliotecas).
Para más seguridad, empieza por emplear tus propias funciones.
Para crear un ejecutar un diálogo sin generar errores debes tener en cuenta:
* existe la biblioteca???
*si existe, cargarla (si no está ya cargada)
*existe el diálogo???
*si existe , cargarlo
Además, si te refieres a bibliotecas de "Mis macros" o "Macros de OOo"
desde dentro de un documento, debes emplear GlobalScope.
El siguiente es un ejemplo para ejecutar un diálogo que ya viene EN la
biblioteca Gimmicks de las macros y diálogos *de OOo* DESDE una macro
*dentro de un documento* :
Dim bExisteBiblio as Boolean
bExisteBiblio = GlobalScope.DialogLibraries.hasByName("Gimmicks")
'si existe la biblioteca
If bExisteBiblio Then
'si NO está cargada,
If NOT GlobalScope.DialogLibraries.isLibraryLoaded("Gimmicks") Then
'entonces cargarla
GlobalScope.DialogLibraries.loadLibrary("Gimmicks")
End If
'averiguar si existe el diálogo
Dim bExisteDialogo as Boolean
bExisteDialogo =
GlobalScope.DialogLibraries.Gimmicks.hasByName("UserfieldDlg")
'si existe
If bExisteDialogo Then
Dim oUserfieldDlg
'crearlo
oUserfieldDlg = createUnoDialog(_
GlobalScope.DialogLibraries.Gimmicks.UserfieldDlg)
'ejecutarlo
oUserfieldDlg.execute()
'...
oUserfieldDlg.dispose()
Else
MsgBox "Uppsss"
End If
Else
MsgBox "Uppsss"
End If
Para ejecutar un diálogo que esté al mismo nivel que la macro(de
aplicación, o dentro de un documento) emplea el mismo ejemplo pero sin
GobalScope: DialogLibraries se referirá al contenedor de bibliotecas de
diálogos del DOCUMENTO si la macro está en un doc, o al de la
aplicación/usuario si la macro está a nivel de aplicación y no dentro de
un doc.
Saludos,
Ariel.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]