[Résolu][Calc]Suppression d'une image dans une zone de texte

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 !
Xavllo
Membre lOOyal
Membre lOOyal
Messages : 30
Inscription : 27 mars 2008 09:11

[Résolu][Calc]Suppression d'une image dans une zone de texte

Message par Xavllo »


La modération vous a écrit: Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets). [Calc] et non [CALC]. Veuillez corriger SVP.

Bonjour à tous,

J'ai un fichier tableur avec 2 boutons et une zone de texte OLE.
Un bouton permet de sélectionner un document texte. Le document sélectionné est ensuite chargé dans une zone de texte OLE. Dans l'exemple fourni, je n'effectue aucun contrôle sur le type de document.
Le deuxième bouton est censé "vider" la zone de texte. Je crée donc un curseur pour supprimer le texte puis je cherche à supprimer l'image.

Mon problème : l'image n'existe pas dans DrawPage mais dans GraphicObjects. La méthode remove n'existe que dans DrawPage...

Du coup, si je sélectionne un nouveau document, l'image reste.

Je vous joins 2 fichiers : le fichier tableur et un document texte à insérer.

Remarque : dans le fichier texte, l'image est présente dans DrawPage et GraphicObjects. On peut donc la supprimer directement dans le fichier...

Remarque 2 : j'ai essayé d'avoir des informations avec xRay sur l'image via GraphicObjects.GetByIndex(0). Dans le traitement de texte, ça passe. A partir du tableur, ça plante et tout se ferme. Par contre, GraphicObjects.GetByIndex(0).name me renvoie bien le nom...

Si vous avez une idée de la marche à suivre, je suis preneur.

Bonne journée à tous

Xavier
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Xavllo le 12 janv. 2017 19:43, modifié 2 fois.
Xubuntu 16.04 et Libre office 5.1
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [CALC]Suppression d'une image dans une zone de texte

Message par Dude »

Salut,

Déjà, corrige ton titre comme le demande la modération afin de continuer à obtenir des réponses.
Xavllo a écrit :J'ai un fichier tableur avec 2 boutons et une zone de texte OLE.
Ce n'est pas une zone de texte mais un document Writer.
Pourrait-on savoir comment a été inséré l'objet OLE car au chargement du classeur, il n'apparaît pas dans le navigateur.
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [CALC]Suppression d'une image dans une zone de texte

Message par Piaf »

Bonjour
Dans AOO, l'image est présente dans DrawPage à partir du classeur.
Après avoir corrigé la Balise : [Calc] à la place de [CALC], et Objet OLE à la place de zone de texte.
Pour LibO, peux-tu tester ?

Code : Tout sélectionner

Sub VidageZoneTexte
	classeur = thiscomponent
	feuille = Classeur.Sheets.getbyname("Feuille1")
	'Nom="Exploitation"
	objetOLE = feuille.drawpage.getbyindex(RechercheIndex("Article")).model	
	thisComponent.CurrentController.select(feuille.drawpage.getbyindex(RechercheIndex("Article")))
	test = thisComponent.currentcontroller.selection(0)
	test.getByIndex(0).EmbeddedObject.changeState(3)
	objetOLE.DrawPage.remove(objetOLE.DrawPage.getByIndex(0))
	test.getByIndex(0).EmbeddedObject.changeState(1)
	TexteOLE = objetOLE.text
	'Suppression de tout le texte
	oCurseur = TexteOLE.CreateTextCursor
	oCurseur.GoToStart(False)
	oCurseur.GoToEnd(True)
	oCurseur.String = ""	
end sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Xavllo
Membre lOOyal
Membre lOOyal
Messages : 30
Inscription : 27 mars 2008 09:11

Re: [CALC]Suppression d'une image dans une zone de texte

Message par Xavllo »

Salut,
Et bien merci, c'est parfaitement fonctionnel.
Maintenant, je voudrais essayer de comprendre un petit peu :
- tu sélectionnes l'objet OLE avec thisComponent.CurrentController.select(feuille.drawpage.getbyindex(RechercheIndex("Article")))
- test correspond à l'index 0 de la sélection : c'est donc l'objet lui-même mais sélectionner de façon "visible", c'est ça ?
- et après ???

Par contre, ça plante, lorsqu'il n'y a pas d'images. Je vais regarder du côté du nombre d'objets pour tester l'existence et si plusieurs faire une boucle.

Merci.

Je mets en résolu mais j'espère avoir quelques explications complémentaires.

Xavier

PS : il y a une erreur dans la fonction rechercheindex : c'est feuille.drawpage.getbyindex(i).name et non feuille.drawpage.getbyindex(0).name
Xubuntu 16.04 et Libre office 5.1
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Résolu][Calc]Suppression d'une image dans une zone de t

Message par Piaf »

Bonsoir
Xavllo a écrit :- test correspond à l'index 0 de la sélection : c'est donc l'objet lui-même mais sélectionner de façon "visible", c'est ça ?
Pas tout à fait.
Comme LibO ne veut pas reconnaître l'image directement dans l'objet OLE, on édite l'objet, ce qui correspond dans l'interface à un double clic sur l'objet.
Pour la suppression de l'image, on ne travaille plus directement sur l'objet incorporé mais sur son édition.
Xavllo a écrit :Par contre, ça plante, lorsqu'il n'y a pas d'images
Normal il n'y a pas de test :D en ajoutant le test ça devrait le faire

Code : Tout sélectionner

test.getByIndex(0).EmbeddedObject.changeState(3)
If objetOLE.DrawPage.Count > 0 Then
	objetOLE.DrawPage.remove(objetOLE.DrawPage.getByIndex(0))
end if
test.getByIndex(0).EmbeddedObject.changeState(1)
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64