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