[Résolu] [Writer]Définition du nom d'un cadre ajouté

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu] [Writer]Définition du nom d'un cadre ajouté

Messagepar jpwitz » 15 Oct 2019 10:19


La modération vous a écrit: Vous avez mal lu les règles de cette section dans le bandeau rouge en haut de la page.
Les règles de balisage retrouvent ici : Je balise correctement ma question... (première lettre en majuscule puis le reste en minuscules)


Bonjour
J'ai créé une macro enregistrée pour ajouter un cadre à mon document. Pour définir le nom du cadre, j'ai rajouté args1(5).
Mais la macro ne défini pas le nom assigné (Photo1) Il garde le nom par défaut (Cadre1).
Poutrtant dans le propriété de l'objet cadre, Name existe bien.

Merci de votre aide

Code : Tout sélectionner   AgrandirRéduire
Sub CreerCadre
creerUnNouveauCadre (15,15,"Photo1")
End Sub

sub creerUnNouveauCadre(posX as integer,posY as integer, name as string)
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "AnchorType"
args1(0).Value = 0
args1(1).Name = "Pos.X"
args1(1).Value = posX
args1(2).Name = "Pos.Y"
args1(2).Value = posY
args1(3).Name = "Size.Width"
args1(3).Value = 2300
args1(4).Name = "Size.Height"
args1(4).Value = 801
args1(5).Name = "Name"
args1(5).Value = name
dispatcher.executeDispatch(document, ".uno:InsertFrame", "", 0, args1())
end sub
Dernière édition par micmac le 15 Oct 2019 17:33, édité 1 fois.
Raison: Balisage et [Writer] remplace [writer]
Open Office Version: 4.1.6
Windows 10
jpwitz
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 21 Déc 2014 08:52

Re: [writer]Définition du nom d'un cadre ajouté

Messagepar Hubert Lambert » 15 Oct 2019 15:27

Bonjour,

Les actions disponibles via les menus, barres d'outils... du programme lancent des sortes de "supermacros" qui sont les "commandes UNO".
L'enregistreur de macro ne fait en réalité qu'enregistrer ces commandes, sans les traduire en langage "api", le langage de référence pour piloter LibreOffice par macro.
Les commandes UNO accessibles via l'enregistreur sont limitées, opaques et très peu configurables. Dans ton cas par exemple, ".uno:InsertFrame" n'accepte rien d'autres que les 5 paramètres enregistrés.
Si tu souhaites paramétrer plus finement un cadre inséré par macro, voici un exemple de code :
Code : Tout sélectionner   AgrandirRéduire
sub creerCadre2
    creerUnNouveauCadre2(15, 15, "Photo1")
end sub

sub creerUnNouveauCadre2(posX, posY, name)
    doc = thiscomponent
    T = doc.Text
    csst = com.sun.star.text
    cadre = doc.createInstance("com.sun.star.text.TextFrame")
    cadre.AnchorType = csst.TextContentAnchorType.AT_PARAGRAPH  ' const 0
    cadre.Width = 2300
    cadre.Height = 800
    cadre.HoriOrient = csst.HoriOrientation.NONE  ' const 0
    cadre.HoriOrientPosition = posX
    cadre.VertOrient = csst.VertOrientation.NONE  ' const 0
    cadre.VertOrientPosition = posY
    cadre.Name = name
    doc.Text.insertTextContent(T.Start, cadre, False)
    xray cadre
end sub

L'outil Xray te permettra d'explorer plus loin les propriétés de l'objet "TextFrame" et le forum ne manque pas d'exemples.
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1214
Inscrit le : 06 Avr 2016 08:26

Re: [Résolu][writer]Définition du nom d'un cadre ajouté

Messagepar jpwitz » 15 Oct 2019 17:10

C'est tout à fait ce que je cherchais.
Merci beaucoup.
Open Office Version: 4.1.6
Windows 10
jpwitz
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 21 Déc 2014 08:52


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)

cron