Macros/Base/001/es
Appearance
TDF LibreOffice Document Liberation Project Blogs comunitarios Weblate Nextcloud Redmine Ask LibreOffice Donar
Descripción
Nos gustaría administrar imágenes sin incorporarlas en la base de datos para evitar la duplicación y especialmente para no aumentar el tamaño de la base de datos.
Esta característica es accesible sin una macro (vea la respuesta a ¿Cómo manejar imágenes enlazadas?). Aquí veremos las propiedades que se pueden administrar a través de una macro. El resultado conseguido es el siguiente:

- El Cuadro de texto superior permite indicar la imagen escribiendo el camino o URL local.
- El botón (Seleccionar archivo), abre un diálogo para seleccionar un archivo local.
- El Cuadro de texto inferior permite asignar un texto alternativo (título) a la imagen.
- El Control de la imagen muestra la imagen.
Podemos hacer que funcione mediante las dos subrutinas siguientes
Código
en LibreOffice Basic:
Option Explicit
Sub display_image()
Dim oForm As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Standard")
oForm.getByName("ImageControl").ImageURL = convertToUrl( oForm.getByName("textbox_ImageURL").Text )
End Sub ' display_image
Sub save_path(oEvent)
Dim oForm As Object
oForm = ThisComponent.DrawPage.Forms.getByName("Standard")
oForm.getByName("textbox_ImageURL").Text = oEvent.Source.Text
oForm.getByName("textbox_ImageURL").commit
display_image()
End Sub ' save_path
La subrutina display_Image está asociada a los siguientes sucesos:
- Después de un cambio al guardar el formulario,
- Si el Control de imagen recibe el foco
La subrutina save_path está asociada a los siguientes sucesos:
- Pérdida de foco de un Cuadro de texto,
- Texto modificado en la Selección de archivos