[Resolu] [Writer] Inserer une image à la position du curseur

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 !
larra.phil
Fraîchement OOthentifié
Messages : 4
Inscription : 08 août 2007 23:26

[Resolu] [Writer] Inserer une image à la position du curseur

Message par larra.phil »

Bonjour à tous,

je suis en train de tester la macro " inserer une image à la position du curseur" fournie dans le livre programmationOpenOffice.Org (p479) et je n'obtiens pas le résultat anoncé. Mon image s'insère mais jamais à la position de mon curseur mais à une position qui fait référence au coin en haut à gauche de la feuille. Merci par avance pour vos explications.

Code : Tout sélectionner

Sub AjouterImage()
Dim monDocument As Object, monTexte As Object
Dim monCurseur As Object, monImage As Object
Dim positionImage As New com.sun.star.awt.Point
monDocument = ThisComponent
monTexte = monDocument.Text
monCurseur = monTexte.createTextCursor
monCurseur.gotoNextParagraph(False) ' déplacer le curseur

positionImage.x = 1500 ' 15 mm à droite du point d'ancrage
positionImage.y = 1300 ' 13 mm en dessous du point d'ancrage

monImage = monDocument.createInstance(_
          "com.sun.star.drawing.GraphicObjectShape")
monImage.GraphicURL = ConvertToURL(_
          "C:\Docs OpenOffice\LogoOpenOffice.png")
monImage.AnchorType = _
        com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
monTexte.insertTextContent(monCurseur, monImage, false)
resizeImageByWidth(monImage, 5500) ' largeur en 1/100 de mm
monImage.Position = positionImage
monImage.Surround = com.sun.star.text.WrapTextMode.RIGHT
End Sub


Sub resizeImageByWidth(uneImage As Object, largeur As Long)
Dim leBitMap As Object, Proportion As Double
Dim Taille1 As New com.sun.star.awt.Size
LeBitmap = uneImage.GraphicObjectFillBitmap
Taille1 = LeBitMap.Size ' taille en pixels !
Proportion = Taille1.Height / Taille1.Width
Taille1.Width = largeur ' largeur en 1/100 de mm
Taille1.Height = Taille1.Width * Proportion
uneImage.Size = Taille1
End Sub
Dernière modification par larra.phil le 10 août 2007 10:30, modifié 3 fois.
openoffice 2.3.1
windows XP SP2
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonjour et bienvenue sur ce forum

Nouveau (elle ?) sur ce forum tu n'en maitrises pas encore le fonctionnement :)

Il faut poser les questions relatives aux macros dans la section "macros".

Autre conseil : le code doit être "balisé" avec la balise Code correspondante. Le plus simple est de sélectionner le texte correspondant et de cliquer sur le bouton Code dans la barre d'outils en dessous du sujet.

Merci :D

Cela dit, sur le fond, ce code se déplace au deuxième paragraphe (s'il existe) et ancre l'image à ce parapraphe (avec un léger décalage). Il me semble donc tout à fait normal que l'image soit insérée "en haut de la page"...
larra.phil
Fraîchement OOthentifié
Messages : 4
Inscription : 08 août 2007 23:26

Message par larra.phil »

Bonsoir a tous.

Merci pour tes conseils Pierre-Yves qui m'ont permis de comprendre mon erreur :? car je pensais que l'image serait insérée à mon curseur visible mais dans la macro elle est inserée à la position du curseur d'écriture. J'ai pu faire la modification et du coup mon image s'insert bien à la position de mon curseur visible.Voici la partie modifier qui permet de positionner le curseur d'écriture sur le curseur visible :

Code : Tout sélectionner

curseurVisible = monDocument.currentcontroller.ViewCursor 
monTexte = curseurVisible.Text
monCurseur = montexte.createTextCursorByRange(curseurVisible.Start)

Ceci étant fait, je cherche maintenant à mettre au point une macro qui me permettrait de remplacer une image sélectionnée par une autre image et là, je bloque un peu car ma sélection de départ n'est plus du texte comme dans la macro précedente mais une image. Merci d'avance pour vos solutions.
openoffice 2.3.1
windows XP SP2
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

larra.phil a écrit : Ceci étant fait, je cherche maintenant à mettre au point une macro qui me permettrait de remplacer une image sélectionnée par une autre image et là, je bloque un peu car ma sélection de départ n'est plus du texte comme dans la macro précedente mais une image. Merci d'avance pour vos solutions.

La règle sur ce forum est de ne poser qu'une question par fil afin de faciliter les recherches ultérieures. Il aurait donc fallu ouvrir un nouveau fil spécifique...

Ci-dessous un exemple :

Code : Tout sélectionner

option explicit

Sub PysRemplacerImage

Dim PysDocument as Object
Dim PysDrawPage as Object
Dim PysImage as Object

PysDocument = thisComponent				'le document courant
PysDrawPage = thisComponent.DrawPage	'la couche "dessin" dans laquelle sont les images
PysImage = PysDrawPage.getByIndex(0)	'accès dans cette "couche" à la première image

PysImage.GraphicURL = ConvertToURL(_
          "C:\Documents and Settings\Pierre-Yves\Mes documents\Mes images\divers\test.jpg")

End Sub