Formularios (a)
Además de las formas simples de interface (MsgBox e InputBox), LibreOffice cuenta con otros dos recursos de interface: los formularios y los cuadros de diálogo.
Los formularios son medios para facilitar la interacción usuario-programa, empleados fundamentalmente en la fase Input. A diferencia del cuadro de diálogo (en adelante, Diálogo, por brevedad), el formulario se puede emplear tanto como funcionalidad (1) como asociado a a un script; en ambos casos, el primer paso consiste en crear el formulario (funcionalidad) desde el documento, sea este un documento Writer o desde Calc.
El recorrido que deberemos hacer para acceder a un formulario depende del soporte (o servicio) en el que esté creado: no es lo mismo trabajar desde Writer que hacerlo desde Calc.
Un script que nos permita acceder a un formulario creado en un documento Writer requiere realizar el siguiente recorrido, en el que se diferencian cuatro pasos, que precisan contar con una serie de variables de tipo Object (5):
Dim oDocumento As Object, oCapaDib As Object, oForms As Object, oForm As Object
- Paso 1. Acceso al documento: oDocumento = ThisComponent
- Paso 2. Acceso a la capa gráfica: oCapaDib = oDocument.getDrawPage()
- Paso 3. Acceso al conjunto de formularios: oForms = oCapaDib.getForms()
- Paso 4. Acceso al formulario concreto por el índice o por el nombre:
oFormulario = oFormularios.getByIndex() -> Acceso por el índice
oFormulario = oFormularios.getByName("frmActua") -> Acceso por el nombre
El acceso a un formulario creado sobre Calc requiere también seguir una serie de pasos (cinco) que se basan en un conjunto de variables tipo Object por las mismas razones que expusimos antes (ver nota 5)
Dim oDocumento As Object, oHojaActiva As Object, oPaginaDibujo As Object
Los pasos a seguir son los siguientes:Dim oFormularios As Object, oFormulario As Object
- Paso 1. Acceso al documento: oDocumento = ThisDocument
- Paso 2. Acceso a la hoja activa:
oHojaActiva = oDocumento.getCurrentController.getActiveSheet()
- Paso 3. Acceso a la capa gráfica: oPaginaDibujo = oHojaActiva.getDrawPage()
- Paso 4. Acceso al conjunto de formularios: oFormularios = oPaginaDibujo.getForms()
- Paso 5. Acceso al formulario concreto, el cual puede ser por índice o por el nombre:
oFormulario = oFormularios.getByIndex() -> Acceso por el índice
oFormulario = oFormularios.getByName(""frmCalcEj") -> Acceso por el nombre
NOTAS
(1) Por funcionalidad entiendo cualquier recurso que puede ser desarrollado desde la interface general del servicio (Writer, por ejemplo), sin necesidad de acceder al IDE. En Writer los formularios se crean en la capa "Dibujo" del documento directamente desde éste. Para crear un Diálogo es necesario acceder al IDE y crearlo específicamente de forma directa. Desde esta perspectiva el formulario es un objeto más accesible y simple que un diálogo.
(2) Es posible que esta sea una de las causas de su escaso uso. Contribuye a ello que en los documentos prescriptivos (que no hacen otra cosa que seguir la costumbre consolidad por el uso) se empleen tablas como base para simular la apariencia de formulario.
(3) Este procedimiento implica activar el icono de la barra Controles de formulario. Este mismo icono está también disponible en la barra del Diseño de formulario. Activarlo también supone acceder a la definición del formulario y a otras utilidades, incluyendo la introducción de campos (comando Añadir campo), que también activa la barra Controles de formulario.
(4) Tanto en Writer como en Calc, los formularios se ubican en la capa gráfica ("de dibujo"), que se superpone a la capa en la que escribimos en el documento (en Writer) o en la que se encuentran las celdas (en Calc)
(5) Tanto el documento, como la capa gráfica y los formularios son objetos, dado que LibreOffice es un programa creado dentro del paradigma de la Programación Orientada a Objetos (POO)
No hay comentarios:
Publicar un comentario
Comenta esta entrada