5 messages in org.openoffice.fr.progRe: [prog] Bouger le curseur visible...
FromSent OnAttachments
Philippe PonsFeb 12, 2008 7:38 am 
Jean-Marc DelmasFeb 12, 2008 8:09 am 
Luc SorelFeb 12, 2008 8:24 am 
Philippe PonsFeb 12, 2008 11:29 am 
Luc SorelFeb 12, 2008 11:41 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] Bouger le curseur visible vers le mote précédentActions...
From:Luc Sorel (sor@agrocampus-rennes.fr)
Date:Feb 12, 2008 8:24:24 am
List:org.openoffice.fr.prog

Bonjour,

Philippe Pons a écrit :

Bonjour,

Je vois qu'on peut bouger un curseur d'écriture vers le mot précédent avec la méthode gotoPreviousWord. Je ne trouve pas de méthode équivalente pour le curseur visible. C'est pas possible?

Merci,

Non, a priori ce n'est pas possible. J'ai longtemps creusé la question lors du développement de mon extension MoveText <http://www.lucsorel.com/index.php?page=downloads#movetext>, dont la fonctionnalité est de déplacer du texte sélectionné notamment de le déplacer par mot. L'API propose 2 objets aux noms voisins mais aux fonctionnalités différentes :

* ViewCursor (thisComponent.getCurrentController().getViewCursor()) : c'est le curseur qu'on voit quand on tape un document sous Writer. Il sait se déplacer par caractère et aller au début/fin de ligne

* TextCursor : on peut le créer à partir de rien (thisComponent.Text.createTextCursor()) ou à partir du curseur visuel (thisComponent.Text.createTextCursorByRange(viewCursor.getStart())) : c'est un curseur d'écriture, invisible à l'écran, qu'il se déplace même en sélectionnant du texte. Il sait se déplacer par caractère, par mot et par paragraphe.

Le fait que ces 2 objets n'ont pas les mêmes compétences m'ont souvent fait ch... anger d'humeur lors du développement de mon extension car j'avais à manipuler les deux en parallèle. En fonction de ce que tu veux faire, peut-être que seul un curseur est nécessaire.

Pour des exemples de manipulation de ces 2 curseurs, tu peux regarder dans le code source de MoveText <http://www.lucsorel.com/media/downloads/movetext.bas> si tu veux. Tu peux jeter un coup d'œil à la fonction moveTextToRightByWord pour voir comment gérer le déplacement "simultané" des 2 curseurs vis-à-vis des mots. On peut procéder plus simplement en déplaçant un curseur d'écriture par mot en lui demandant de sélectionner le texte et déplaçant le curseur visuel du nombre de caractère de la sélection, mais cela ne fonctionne si le curseur visuel était en tête de paragraphe ou de puce dans une liste. En effet dans ce cas, car un des curseurs comptent les sauts (de puce ou de paragraphe) comme un caractère supplémentaire alors que l'autre les ignore. Bref... bon courage ! :-)

Sympathicamicalement, Luc