jueves, 16 de mayo de 2024

OOo Basic. Interface.

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 (1como 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.




En esta entrada trataré sobre el acceso al formulario mediante código OOo Basic, útil para trabajar con Writer, Calc e Impress. Los formularios de Base (base de datos) quedan fuera de nuestros objetivos por su especificidad.

El primer paso es, como dije antes, es crear el formulario desde el documento. Es posible que esta funcionalidad no está directamente disponible (2), por lo que necesitaremos activar las opciones FormularioVer | Barra de herramientas | Diseño de formularios (que muestra sus controles) y Ver | Barra de herramientas | Controles de formularios, que muestra las herramientas de los Controles. A partir de aquí lo que debemos hacer es seleccionar el icono Modo diseño... (3)



Una vez creado el formulario, para trabajar sobre él mediante OOo Basic deberemos trabajar desde el IDE para acceder a la capa gráfica (getDrawPage()), que es donde se sitúan los formularios (4). 

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
Dim oFormularios As Object, oFormulario As Object

 Los pasos a seguir son los siguientes:
  • 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


Podemos 
 considerar lo anterior como primera fase del proceso, que finaliza con el acceso a los contenidos que introduce el usuario en los controles del formulario. Dedicaremos a ello la entrada siguiente.

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