FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017  Ajouter une question

 

Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).

Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.


SommaireProgrammation OBasicOBasic : Traitement de texteLes cadres - TextFrames (5)
précédent sommaire suivant
 

HautPageComment boucler sur les cadres contenus dans un document ?
Les cadres (aussi appelés TextFrames) sont accessibles en utilisant le menu Insertion/Cadres.

Cet exemple boucle sur tous les cadres du document pour en récupérer certaines informations :

  • le nom ;
  • le texte contenu ;
  • Les dimensions.


Et modifie :

la propriété d'impression du cadre ;
la protection de la taille, de la position et du contenu
Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub BoucleCadres 
	 Dim i As Integer 
  
	 For i = 0 To Ubound( ThisComponent.TextFrames.ElementNames() )  
   'Affiche le nom de chaque cadre 
   MsgBox ThisComponent.TextFrames.ElementNames (i) 
  
   '--- quelques exemples d'actions sur les cadres 
   With ThisComponent.TextFrames.getByIndex( i ) 
  
   'Récupère le contenu du cadre 
   MsgBox .String 
  
   'Récupère les dimensions du cadre 
   MsgBox .Height & " x " & .Width 
  
   'Désactive l'option d'impression de chaque cadre 
   .setPropertyValue( "Print" , False )  
  
   'protége la taille du cadre 
   .Text.SizeProtected = True 
  
   'protège la position du cadre 
   .Text.PositionProtected = True  
  
   'protège le contenu du cadre 
   .Text.ContentProtected = True 
  
 End With 
  
Next i 
End Sub

Mis à jour le 2 août 2013 SilkyRoad

L'exemple positionne le curseur dans le premier cadre du document.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
Sub AtteindreCadreSpecifique 
  Dim oFrame As Object 
  
  'Spécifie le 1er cadre dans le document 
  oFrame = ThisComponent.TextFrames.getByIndex(0)  
  'Positionne le curseur dans le cadre 
  ThisComponent.CurrentController.Select( oFrame.Text.Start )  
  
End Sub

Mis à jour le 2 août 2013 SilkyRoad

Utilisez la macro ci-dessous pour récupérer la position d'un cadre:

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
Sub RecupererPositionCadre 
  Dim oFrame As Object 
  
  'Spécifie un cadre nommé "Cadre1" 
  oFrame = ThisComponent.TextFrames.getByName("Cadre1") 
  
  MsgBox oFrame.HoriOrientPosition & " x " & oFrame.VertOrientPosition 
End Sub
La procédure suivante modifie la position du cadre:
Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
Sub ModifierPositionCadre 
  Dim oFrame As Object 
  
  'Spécifie un cadre nommé "Cadre1" 
  oFrame = ThisComponent.TextFrames.getByName("Cadre1") 
  
  With oFrame  
    .HoriOrientPosition = 4000  
    .VertOrientPosition = 6000  
  End With  
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Sub CreationCadre 
 Dim oFrame As Object 
 Dim Curseur As Object 
  
 Curseur = ThisComponent.Text.createTextCursor()  
oFrame = ThisComponent.createInstance( "com.sun.star.text.TextFrame" ) 
  
 'Insertion du cadre à l'emplacement du curseur 
 ThisComponent.Text.insertTextContent( Curseur , oFrame , False ) 
  
 With oFrame 
   .Name = "LeCadre" 
   .setString( "Mon texte dans le cadre" )  
   .BackColor = RGB( 255 , 0 , 0 ) 
  
   'Définit le type d'ancrage 
   .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE  
  
   'Définit la largeur du cadre par rapport à la largeur de la page (en pourcentage) 
   '.FrameWidthPercent = 90 
  
   'Position horizontale 
   .HoriOrient = com.sun.star.text.HoriOrientation.NONE 
   .HoriOrientRelation = com.sun.star.text.RelOrientation.PAGE_FRAME 
   .HoriOrientPosition = 4000 
  
   'Position verticale 
   .VertOrient = com.sun.star.text.VertOrientation.NONE  
   .VertOrientRelation = com.sun.star.text.RelOrientation.PAGE_FRAME  
   .VertOrientPosition = 10000  
  
  
   .Width = 5000 
   '.FrameIsAutomaticHeight = False 
   '.Height = 5000 
  
   'Pour adapter le cadre à la taille du texte 
   '.WidthType = 2 
 End With 
  
End Sub

Mis à jour le 2 août 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub ModificationBordures 
  Dim oFrame As Object 
  Dim Tableau As Variant 
  
  'Spécifie un cadre nommé "LeCadre" 
  oFrame = ThisComponent.TextFrames.getByName("LeCadre") 
  
  'Array( Color , InnerLineWidth , OuterLineWidth , LineDistance ) 
  Tableau = Array(0, 0, 0, 0)  
  
  With oFrame   
    .setPropertyValue( "TopBorder" , Tableau )  
    .setPropertyValue( "BottomBorder" , Tableau ) 
    .setPropertyValue( "LeftBorder" , Tableau )  
    .setPropertyValue( "RightBorder" , Tableau )  
  End With 
  
End Sub

Mis à jour le 2 août 2013 SilkyRoad

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique OpenOffice & LibreOffice : zoom61 -