Diálogos OpenOffice Basic
Los documentos de Apache OpenOffice (documentos de texto, libros de hojas de cálculo, presentaciones, bases de datos...) permiten que se les agreguen diálogos y formularios. Estos a su vez pueden estar vinculados a las macros de OOoBasic para ampliar considerablemente las posibilidades de uso de la suite.
Mediante los diálogos podemos, por ejemplo, mostrar información de la base de datos o guiar a los usuarios a través de un proceso paso a paso para crear un nuevo documento, de la misma forma que lo hace un asistente.
Trabajando con diálogos
Los diálogos básicos consisten en una ventana emergente que puede contener campos de texto, cuadros de lista, botones, botones de radio, casillas de selección, imágenes y otros elementos de control (genéricamente denominados controles).
Creación de cuadros de diálogo
Para crear diálogos utilizamos el editor de diálogos de Apache OpenOffice.
El editor de diálogos nos permite:
- Crear y estructurar los diálogos
- Arrastrar los elementos de control de la plataforma de diseño (a la derecha) al área de diálogo, y definir su posición y tamaño.
El ejemplo muestra un cuadro de diálogo que contiene una etiqueta, un cuadro de lista, dos botones y una imagen.
Podemos crear un cuadro de diálogo creado con el editor de diálogos con el siguiente código:
Function DlgCrear( cNomLibreria As String, cNomDlg As String ) As Object '-------------------------------------------------------------------------- On Local Error GoTo Error_DlgAbrir Dim Dlg As Object If DialogLibraries.HasByName(cNomLibreria) Then DialogLibraries.LoadLibrary(cNomLibreria) oDlg = CreateUNODialog(DialogLibraries.Standard.GetByName(cNomDlg)) DlgCrear = oDlg Else MsgBox "La librería " & cNomLibreria & " no existe", 144, "Error" EndIf Exit Function Error_DlgAbrir: MsgBox "Error al abrir el diálogo " & cNomDlg & Chr(13) & Error, 144, "Error" End Function
El diálogo abierto se puede cerrar con este código
Sub DlgCerrar( oDlg As Object ) '-------------------------------------------------------------------------- On Local Error GoTo Error_DlgCerrar oDlg.Dispose() Exit Sub Error_DlgCerrar: MsgBox "Error al cerrar el diálogo" & Chr(13) & Error, 144, "Error" End Sub
Para mostrar el diálogo utilizaremos el método Execute; este es un ejemplo del uso de las dos funciones combinadas para mostrar el diálogo Dialog1 creado con el editor de diálogos:
Sub Main() '-------------------------------------------------------------------------- Dim oDlg As Object oDlg = DlgCrear( "Standard", "Dialog1" ) oDlg.Execute() DlgCerrar oDlg End Sub
Y este es el resultado de ejecutar el código:
El método CreateUnoDialog crea un objeto llamado oDlg que hace referencia al diálogo asociado. Antes de abrir el diálogo es necesario asegurarse que la librería que lo contiene (en nuestro caso la librería Standard) existe y está cargada en memoria, para lo que utilizamos los métodos HasByName y LoadLibrary del objeto DialogLibraries.
Una vez que el diálogo ha sido inicializado puede ejecutarse (mostrarse) mediante el método Execute; el diálogo se muestra en forma modal, lo que significa que toma el foco de atención de la aplicación y no permite trabajar en la misma hasta que cerremos el diálogo.
Durante todo el tiempo en que el diálogo permanece abierto, el programa permanece en la llamada Execute. Cuando se cierra el diálogo se ejecuta la siguiente instrucción, en nuestro ejemplo, la que elimina el diálogo (descarga el diálogo de la memoria, dejando ésta libre) mediante el método Dispose.
Cerrar el diálogo con Aceptar o Cancelar
Si un diálogo posee los botones Aceptar y Cancelar, y estos han sido definidos con su propiedad Tipo de botón Aceptar y Cancelar, respectivamente, al hacer clic sobre alguno de ellos el diálogo se cierra. Podemos detectar sobre qué botón hizo clic el usuario a través del método Execute, ya que si se pulsó el botón Aceptar devuelve un 1, y un 0 en caso contrario.
Sub Main() '-------------------------------------------------------------------------- Dim oDlg As Object, nBoton As Integer oDlg = DlgCrear( "Standard", "Dialog1" ) nBoton = oDlg.Execute() If nBoton = 1 Then MsgBox ("Se ha pulsado el botón Aceptar", 192, "Información") Else MsgBox ("Se ha pulsado el botón Cancelar", 192, "Información") EndIf DlgCerrar oDlg End Sub
Cerrar el diálogo con el botón Cerrar de la barra de título
Si se cierra el diálogo con el botón Cerrar de la barra de título, el valor devuelto por el método Execute es 0, el mismo que cuando se cierra mediante el botón Cancelar
Cerrar el diálogo desde una llamada del programa
Si deseamos cerrar el diálogo desde una orden del programa podemos utilizar el método endExecute:
Sub DlgForzarCierre( oDlg As Object ) '-------------------------------------------------------------------------- On Local Error GoTo Error_DlgForzarCierre oDlg.endExecute() Exit Sub Error_DlgForzarCierre: MsgBox "Error al forzar el cierre del diálogo" & Chr(13) & Error, 144, "Error" End Sub
El valor devuelto por el método Execute también es 0, el mismo que cuando se cierra mediante el botón Cancelar
Puedes encontrar más información sobre diálogos y formularios en:
|