Macros

    From The Document Foundation Wiki
    < Macros‎ | Calc


    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