[Résolu][Writer]Faire coïncider curseur visible + textCursor

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 !
tj85
Fraîchement OOthentifié
Messages : 5
Inscription : 31 janv. 2018 09:35
Localisation : Vendée

[Résolu][Writer]Faire coïncider curseur visible + textCursor

Message par tj85 »

Bonjour à vous,

En train de devenir chèvre je viens bêler un petit coup sur ce forum en espérant qu'une âme charitable et compétente compatira...
J'écris une petite application de facturation, une reprise d'un existant sous Word. Le lien fait entre la fiche de travail remplie par l'ouvrier et la comptabilité est original et j'aimerais le reproduire : La comptable saisit dans la facture en cours de rédaction (qui peut comporter pas mal de texte libre) un code standard porté par l'ouvrier sur sa fiche de travail. Actuellement, le système utilise des AutoText (en fait leur équivalent sous Word) et remplace le code saisi par un libellé qui lui correspond.
Je souhaite reprendre et étendre cette approche. Pour cela, je dois sélectionner le code saisi, puis l'utiliser pour consulter une base de données qui contient les informations utiles à la facturation de l'item, que j'insérerai dans un tableau à la place du code.
Je maitrise la partie base de données et je sais sélectionner le dernier mot du texte global, je me débrouille avec les tableaux. Ce que je dois faire, c'est sélectionner le mot qui se trouve directement avant le curseur visible, où que soit ce dernier. Et là, je sèche complètement.
Voici le petit bout de code que j'utilise pour vérifier comment ça marche. J'ai enlevé les appels à Xray :

Code : Tout sélectionner

Sub Main
	Dim monDocument As Object, monTexte As Object
	Dim monCurseur As Object
	Dim curseurVisible As Object
	Dim laCle As String
	
	monDocument = ThisComponent
	monTexte = monDocument.Text
	
	curseurVisible = monDocument.currentController.viewCursor
	monCurseur = monTexte.createTextCursor(curseurVisible)
	monCurseur.gotoPreviousWord(True)
	laCle = monCurseur.String
	msgBox(laCle)
End Sub
J'ai beau mettre mon curseur visible (cliquer dans le texte) n'importe où, je me retrouve toujours au début du texte et "laCle" est donc toujours vide. Je pensais innocemment que créer le TextCursor d'après les éléments du viewCursor suffirait à récupérer la Position de ce dernier, manifestement, ce n'est pas ça, et en plus le TextCursor n'a même pas la propriété Position... bref, je suis paumé, là.

Merci de vous pencher sur mes affres, à bientôt j'espère.
Dernière modification par Don Corleone le 31 janv. 2018 11:58, modifié 1 fois.
Raison : Balise et coche
LibreOffice Version: 5.4.6.2 (Désolé...)
MacOSX 10.13.4
tj85
Fraîchement OOthentifié
Messages : 5
Inscription : 31 janv. 2018 09:35
Localisation : Vendée

Re: [Writer]Faire coïncider curseur visible et textCursor

Message par tj85 »

Bon, ben comme toujours, il faut essayer plus fort. Je n'avais pas compris le fonctionnement du createTextCursorByRange et je ne vois toujours pas bien comment ça marche, mais bon...)
Voici donc le code qui fonctionne, pour ceux que ça peut intéresser :

Code : Tout sélectionner

Sub Main
	Dim monDocument As Object, monTexte As Object
	Dim monCurseur As Object
	Dim curseurVisible As Object
	Dim laCle As String
	
	monDocument = ThisComponent
	monTexte = monDocument.Text
	
	curseurVisible = monDocument.currentController.viewCursor
	monCurseur = monTexte.createTextCursorByRange(curseurVisible)
	monCurseur.gotoPreviousWord(True)
	laCle = monCurseur.String
	msgBox(laCle)
End Sub
Le cas est donc résolu...
LibreOffice Version: 5.4.6.2 (Désolé...)
MacOSX 10.13.4