Macros
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
Comment créer une forme et lui affecter une macro ?
L'exemple suivant montre comment créer une forme (ici un rectangle) et affecter une macro à l'événément Sur clic de cette dernière, soit l'équivalent du menu contextuel Assigner une macro et de l'événement Bouton de la souris enfoncé.
Un tableau de propriétés est utilisé pour "décrire" la macro qui sera associée à la forme, en particulier son chemin d'accès sous la forme NomBibliothèque.NomModule.NomProcédure (Standard.Module1.MacroALancer dans l'exemple).
Code de la macro :
Sub CreerRectangleAffecterMacro
dim oClasseur as object
dim oPage as object
dim oMonObjet as object
dim sTaille as new com.sun.star.awt.Size
dim sPos as new com.sun.star.awt.Point
dim oEvts as object
dim oEvt(1) as new com.sun.star.beans.PropertyValue
oClasseur = thiscomponent
oPage = oClasseur.sheets.getByName("Feuille1").DrawPage
sTaille.Height = 2310
sTaille.Width = 4620
sPos.X = 3000
sPos.Y = 2310
oMonObjet = oClasseur.createInstance("com.sun.star.drawing.RectangleShape")
oMonObjet.Size = sTaille
oMonObjet.Position = sPos
oPage.add(oMonObjet)
oEvts = oMonObjet.Events 'accès aux événements disponibles pour cette image
oEvt(0).Name = "EventType" 'confection d'un tableau de propriété pour décrire la macro
oEvt(0).Value = "Script" 'qui sera associée à l'événement
oEvt(1).Name = "Script"
oEvt(1).Value = "vnd.sun.star.script:Standard.Module1.MacroALancer?language=Basic&location=document"
oEvts.replaceByName("OnClick", oEvt()) 'attribution de la macro à l'événement "Clic sur l'objet"
msgbox "Terminé"
End Sub
sub MacroALancer
msgbox "ok"
end sub