Comment gérer les images liées ?

From The Document Foundation Wiki
< Macros‎ | Base
Jump to: navigation, search
This page is a translated version of the page Macros/Base/001 and the translation is 100% complete.

Other languages:
English • ‎français

Description

On souhaite gérer des images sans incorporer ces dernières dans la base. L'avantage est de ne pas les dupliquer et surtout de ne pas faire grossir d'autant la base de données.

Cette fonctionnalité est accessible sans macro (voir la FAQ correspondante de la section Base). Nous verrons ici comment gérer par programme les propriétés concernées.


Résultat souhaité

copie d'écran formulaire
Formulaire de saisie/affichage des images
  • Une zone de texte permettant de saisir ou coller le chemin d'accès à l'image (local ou Url).
  • Un contrôle Sélection de fichier pour permettre la sélection des images.
  • Le formulaire comprend en outre une zone de texte permettant à l'utilisateur de saisir un titre à l'image.
  • Le contrôle Picto permettant l'affichage occupe le bas du formulaire

Base permet de réaliser cela via deux procédures.

Code

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 procédure display_image (afficher image) est associée aux événements :

  • Après le changement d'enregistrement du formulaire,
  • À la réception du focus du contrôle Image.

La procédure save_path (enregistrer chemin) est associée aux événements :

  • À la perte du focus du contrôle zone de texte,
  • Texte modifié du contrôle Sélection de fichier.

Document exemple