Macros

From The Document Foundation Wiki
< Macros‎ | Calc
Jump to: navigation, search

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


Télécharger le classeur exemple