[Résolu][Writer] Bordure de cadre

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 !
jean83fun
Membre hOOnoraire
Membre hOOnoraire
Messages : 153
Inscription : 06 févr. 2013 21:10

[Résolu][Writer] Bordure de cadre

Message par jean83fun »

Bonjour à tous,

La macro suivante m'insère un cadre entouré d'une bordure

Code : Tout sélectionner

Sub Cadre2 (sText as String)
   Dim MonDocument3 As Object, MonTexte As Object
   Dim MonCurseur  As Object
   Dim MonCadre As Object
   MonDocument3 = ThisComponent
   MonTexte = MonDocument3.Text
   MonCurseur= MonTexte.createTextCursor

   ' mon cadre
   MonCadre = MonDocument3.createInstance("com.sun.star.text.TextFrame")
       with MonCadre
          .SizeType = com.sun.star.text.SizeType.MIN
          .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE
          .HoriOrient = com.sun.star.text.HoriOrientation.NONE
          .HoriOrientPosition = 13000
          .VertOrient = com.sun.star.text.VertOrientation.NONE
          .VertOrientPosition = 4500 
          .Height = 1000
          .Width = 7750
       End with
   MonTexte.insertTextContent(MonCurseur, MonCadre, false)
     MonCadre.Text.String = sText
end sub
Dans la suivante, il n'y a pas de bordure :

Code : Tout sélectionner

Sub Cadre3 (sText as String)
   Dim MonDocument3 As Object, MonTexte As Object
   Dim MonCurseur  As Object
   Dim MonCadre As Object
   MonDocument3 = ThisComponent
   MonTexte = MonDocument3.Text
   MonCurseur= MonTexte.createTextCursor

   ' mon cadre
   MonCadre = MonDocument3.createInstance("com.sun.star.text.TextFrame")
       with MonCadre
          .SizeType = com.sun.star.text.SizeType.MIN
          .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE
          .HoriOrient = com.sun.star.text.HoriOrientation.RIGHT
          .HoriOrientRelation = com.sun.star.text.RelOrientation.PAGE_PRINT_AREA
          .VertOrient = com.sun.star.text.VertOrientation.TOP
          .VertOrientRelation = com.sun.star.text.RelOrientation.PAGE_PRINT_AREA
          .Height = 750
          .Width = 8000
       End with
   MonTexte.insertTextContent(MonCurseur, MonCadre, false)
     TextCadre = MonCadre.Text
   CurseurCadre = TextCadre.createTextCursor
   CurseurCadre.paraStyleName = "Droite"
   MonCadre.Text.String = sText
  
end sub
Je ne parviens pas à voir la différence, et je voudrais ne pas avoir de bordure à mon cadre dans la première macro. Me faut-il aller voir dans les Préférences du Modèle de document dans lequel la macro s'applique ? Je ne trouve pas la commande Basic qui configure la présence d'une bordure ou pas, car finalement si, sur le même document, on veut un cadre avec bordure et un autre sans, cela doit pouvoir se commander.

Merci de vos avis :-)
Dernière modification par jean83fun le 31 juil. 2017 10:12, modifié 1 fois.
Jean

"Donne un poisson à un homme, il mangera un jour, apprends-lui à pêcher, il mangera tous les jours."

MacOS X 12.4 M1
LO 7.2.7.2
AOO 4.1.10
temurin-8.jdk


MacOS X 12.6.7 Intel
LO 7.2.7.2
AOO 4.1.3
jdk 1.8.0_333 (??)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Writer] Bordure de cadre

Message par Hubert Lambert »

Bonjour,

Plusieurs solutions :
- la solution facile (et conseillée si possible) : définis un style de cadre avec les caractéristiques qui t'intéressent et applique-le :

Code : Tout sélectionner

 MonCadre.FrameStyleName = "mon style de cadre"
- variante : modifie simplement le style de cadre par défaut "Cadre"
- la méthode "dure" :

Code : Tout sélectionner

   bordures = array("BottomBorder", "LeftBorder", "RightBorder", "TopBorder")
   dim borderstruct as new com.sun.star.table.BorderLine
   for each bordure in bordures
      MonCadre.setPropertyValue(bordure, borderstruct)
   next bordure
Cordialement.

PS. Chez moi, les deux macros insèrent un cadre avec bordures.
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)
jean83fun
Membre hOOnoraire
Membre hOOnoraire
Messages : 153
Inscription : 06 févr. 2013 21:10

Re: [Writer] Bordure de cadre

Message par jean83fun »

Hubert Lambert a écrit :Bonjour,

Plusieurs solutions :
- la solution facile (et conseillée si possible) : définis un style de cadre avec les caractéristiques qui t'intéressent et applique-le :

Code : Tout sélectionner

 MonCadre.FrameStyleName = "mon style de cadre"
- variante : modifie simplement le style de cadre par défaut "Cadre"
Ah super, cela fonctionne parfaitement en définissant un modèle de cadre et en l'appelant par la commande MonCadre.FrameStyleName.

Un grand merci :-)
Hubert Lambert a écrit :PS. Chez moi, les deux macros insèrent un cadre avec bordures.
Oui effectivement, si je lance ces 2 macros depuis un fichier neutre, j'ai aussi des cadres. Mais ces macros sont utilisées pour des modèles de documents différents et curieusement, je n'ai pas de cadre sur l'un d'elle... possible qu'il y ait un modèle de cadre défini sans bordure, mais je n'ai pas le souvenir d'avoir touché à ces styles un jour....

En tout cas, "problème" résolu. :super:
Jean

"Donne un poisson à un homme, il mangera un jour, apprends-lui à pêcher, il mangera tous les jours."

MacOS X 12.4 M1
LO 7.2.7.2
AOO 4.1.10
temurin-8.jdk


MacOS X 12.6.7 Intel
LO 7.2.7.2
AOO 4.1.3
jdk 1.8.0_333 (??)
Répondre