Cuadro de diálogo (formulario) para OpenOffice Calc
En este Cómo se hace vamos a mostrar paso a paso como se puede crear un cuadro de diálogo mediante el editor Basic de OpenOffice para introducir datos en una hoja de Calc.
Para poder llevar a buen puerto este tutorial, empezaremos por crear un nuevo documento de Calc, que guardaremos con el nombre Cuadro de diálogo Calc.
En la primera de sus hojas insertaremos un botón que nos permitirá abrir el cuadro de diálogo. Los datos que introduciremos en él quedarán almacenados en la Hoja2 del documento.
No se va a crear una aplicación completa. El objetivo de este tutorial es introducir al usuario en la creación y uso de los cuadros de diálogo en Calc, lo que le permitirá construir fácilmente sencillas aplicaciones para gestionar pequeñas o grandes cantidades de datos, ampliando según lo aquí aprendido su documento de Calc con más diálogos, en función de sus necesidades.
Insertar un botón en la hoja
Empezaremos insertando un botón en la Hoja1 del documento que permitirá abrir el cuadro de diálogo que, a modo de formulario flotante, diseñaremos a continuación.
Para ello, si no está visible, mostraremos la barra de herramientas Campos de control de formulario desde el menú Ver > Barras de herramientas.
Haremos un clic en esta barra de herramientas sobre el botón . El cursor del ratón se mostrará como una pequeña cruz negra con un pequeño rectángulo en su extremo inferior derecho.
Sobre el lugar deseado de la hoja de cálculo, haremos un clic y arrastrar, definiendo de esta forma las dimensiones del botón.
Las dimensiones del botón podrán modificarse utilizando sus manejadores de color verde.
Con el botón seleccionado haremos clic sobre el botón de la barra de herramientas Campos de control de formulario, o bien, haremos un clic con el botón secundario del ratón sobre el botón, y desde el menú contextual seleccionamos la opción Campo de control.... Se mostrará el cuadro de diálogo Propiedades: Botón.
En éste, modificaremos el Título escribiendo Abrir el diálogo desde su pestaña General. De esta forma modificamos el texto que muestra el botón recién insertado. Si lo deseas, puedes modificar otras propiedades del botón, como por ejemplo, la Fuente utilizada para el texto mostrado, sus dimensiones mediante las propiedades Ancho y Altura, la Alineación horizontal y la Alineación vertical del texto mostrado, el Color de fondo del botón, incluso insertar una pequeña imagen (en formato bmp, jpg, png, etc) a modo de icono en el mismo mediante la propiedad Imagen.
Si quieres conocer más acerca de otras de las propiedades que puedes definir para el botón, pulsa la tecla F1 mientras esté activado el diálogo.
Por el momento, podemos cerrar este diálogo, al que volveremos más tarde.
Crear el cuadro de diálogo
Accedemos al editor de macros IDE Basic desde el menú Herramientas > Macros > Organizar macros... > OpenOffice.org Basic.
Localizamos el contenedor de macros de nuestro documento. Haciendo clic en el + que antecede a su nombre, se mostrará la librería Standard, que por el momento está vacía, y que seleccionamos con un clic sobre su nombre.
Haciendo un clic sobre Nuevo creamos un nuevo módulo Basic; se presentará un diálogo sugiriendo el nombre del nuevo módulo como Module1', nombre que aceptamos porque nos es indiferente.
Se mostrará el editor IDE Basic. Justo en la parte inferior del mismo, se muestra una pestaña con el nombre Module1. Haremos clic con el botón secundario del ratón sobre la pestaña, y del menú contextual seleccionamos la opción Insertar > Diálogo BASIC.
El editor IDE Basic presentará una nueva pestaña, de nombre Dialog1, con un pequeño diálogo dibujado en el centro de la misma, y se mostrará también la barra de herramientas flotante Cuadro de herramientas. Si no se muestra, puedes utilizar la opción que encontrarás en el menú Ver > Barras de herramientas
Haremos un clic con el botón secundario sobre la pestaña del diálogo, y seleccionamos Renombrar para cambiar su nombre a Dialogo.
Insertar los controles en el diálogo
Utilizando los botones disponibles en la barra de herramientas Cuadro de herramientas y siguiendo el mismo método que hemos utilizado para insertar el botón en la hoja de Calc (clic y arrastrar) insertaremos:
- Tres etiquetas utilizando el botón
- Tres campos de texto utilizando el botón
- Dos botones utilizando el botón
Cambiaremos los textos de las etiquetas y de los botones siguiendo el mismo método que con el botón insertado en la hoja de Calc (si bien, para acceder al diálogo de propiedades, el botón ahora se llama Propiedades, al igual que la opción del menú contextual del control).
Haciendo un clic justo sobre el borde del diálogo podemos editar sus propiedades; así, asignaremos como Título de nuestro cuadro de diálogo Agregar contactos; una vez hechos todos estos cambios, deberemos obtener un resultado similar al mostrado en la siguiente imagen:
Guarda tu trabajo haciendo clic sobre Guardar.
El código Basic necesario
Haz clic sobre la etiqueta del módulo Module1. Teclea o mejor, copia y pega, el siguiente código sustituyendo el código existente en el módulo:
' ***** BASIC ***** Option Explicit Dim oDialogo As Object ' Abre el diálogo de nombre Dialogo Sub Mostrar_Dialogo() '------------------------------------------------------------------- DialogLibraries.LoadLibrary("Standard") oDialogo=CreateUNODialog(DialogLibraries.Standard.Dialogo) oDialogo.Execute() End Sub ' Cierra el diálogo Sub Cerrar_Dialogo() '------------------------------------------------------------------- oDialogo.EndExecute() MsgBox "Gracias por la visita. Vuelve pronto !!!", 64, "Diálogo en Calc" End Sub ' Almacena los datos en la siguiente línea disponible de la Hoja2, y vacía los datos del formulario Sub Guardar_Datos() '------------------------------------------------------------------- Dim xDato As Variant, nRow As Long If MsgBox( "¿Deseas guardar los cambios realizados?", 33, "Diálogo en Calc" ) = 1 Then nRow = UltimaFila( 1 ) With oDialogo.Model xDato = .TextField1.Text ThisComponent.Sheets(1).GetCellByPosition(0,nRow).SetFormula( xDato ) xDato = .TextField2.Text ThisComponent.Sheets(1).GetCellByPosition(1,nRow).SetFormula( xDato ) xDato = .TextField3.Text ThisComponent.Sheets(1).GetCellByPosition(2,nRow).SetFormula( xDato ) .TextField1.Text = "" .TextField2.Text = "" .TextField3.Text = "" End With End If End Sub ' Calcula cual es la primera línea disponible en la hoja Function UltimaFila( nHoja As Integer ) As Long '------------------------------------------------------------------- Dim oHoja As Object, n As Long oHoja = ThisComponent.Sheets(nHoja) n = 0 Do While True If oHoja.GetCellByPosition(0,n).GetFormula = "" Then Exit Do End If n=n+1 Loop UltimaFila = n End Function
Guarda tu trabajo.
No vamos a explicar que hace cada subrutina; sus nombres son suficientemente explicativos. Cómo lo hacen, tampoco lo explicamos. No es el objetivo de este tutorial. Como cualquier código, es susceptible de ser mejorado. Esperamos tus aportaciones :).
Enlazar los controles al código
Nos queda muy poco trabajo por hacer. Vamos a enlazar los controles del diálogo al código. Haz clic sobre la pestaña del diálogo Dialogo.
Selecciona el primer botón, y muestra la ventana Propiedades. En la pestaña Acontecimientos haz clic sobre el botón con tres puntos mostrado al final de la línea correspondiente al evento Botón del ratón pulsado.
Se mostrará el diálogo Acción asignada. Haz clic ahora sobre Macro
Se mostrará el diálogo Selector de macro. Selecciona el módulo Cuadro de diálogo Calc.ods > Standard > Module1 en la lista Biblioteca. En la lista Nombre de macro selecciona la macro Guardar_Datos. Haz clic sobre Aceptar.
El diálogo Acción asignada se muestra ahora así. Haz clic sobre Aceptar
El diálogo Propiedades:CommandButton se muestra como ves en la imagen.
Selecciona el segundo botón, y realiza los mismos pasos para asignar la macro Cerrar_Dialogo. Cierra la ventana Propiedades y guarda tu trabajo.
Cierra el editor IDE Basic. Ya hemos terminado con la parte dura. Nos queda un último detalle.
Enlazar el botón de la hoja al diálogo
Ahora enlazaremos el botón que situamos en la hoja de cálculo a la macro que abre el diálogo. Desde la barra de herramientas Campos de control de formulario activa el Modo diseño si no está activado, y selecciona con un clic el botón.
Abre el diálogo Propiedades:Botón desde el botón de la misma barra de herramientas. Activa la pestaña Acontecimientos.
Asignaremos por el mismo procedimiento que vimos antes la macro Mostrar_Dialogo al evento Botón del ratón pulsado.
Guarda tu trabajo.
Desde la barra de herramientas Campos de control de formulario desactiva el Modo diseño.
Haz un clic sobre el botón. Si has seguido fielmente los pasos, y nosotros lo hemos explicado correctamente, deberás ver el cuadro de diálogo sobre la hoja de cálculo.
Prueba a completar los datos y pulsar sobre los botones para comprobar que funciona. Recuerda que los datos se almacenan en la Hoja2.
Por si hemos cometido algún error (nosotros o tú, quien sabe ;) ) aquí tienes un enlace para descargar el documento que hemos creado para este tutorial.
Si te ha gustado, puedes firmar en nuestro Libro de Visitas, o recomendarnos en Facebook, Twitter, Google+ o en tu red social favorita.