Je voudrais savoir s'il est possible de connaitre la positon du curseur texte (invisible) dans un document texte.
Cas d'usage :
Dans un document writer ouvert, je cherche à appairer le curseur de souris et le curseur d'écriture.
Je veux écrire automatiquement un petit bout de texte, à l'emplacement de mon curseur clignotant de souris.
Mon problème est que le texte s'écrit à la queue leu leu, en début de mon document,
sans lien avec la position de mon curseur de souris.
Y a t il une méthode pour écrire du texte, à une position donnée ?
Voici le code que j'utilise pour écrire du texte :
Code : Tout sélectionner
Sub EcrireDansDocument()
'Create a text object
Set objText= ThisComponent.getText
'Create a cursor object
Set objCursor= objText.createTextCursor
'Inserting some Text
objText.insertString objCursor, "The first line in the newly created text document." & vbLf, false
'Inserting a second line
objText.insertString objCursor, "Now we're in the second line", false
End Sub
Code : Tout sélectionner
Sub TestPositionCurseur()
print fnPosn(ThisComponent)
End Sub
function fnPosn(oDoc)
set mCurSelection = oDoc.currentSelection ' Record current selection
'Locking controller prevents flicker. But under ALL circumstances must be unlocked
on local error goto finished:
oDoc.lockControllers
oVC = oDoc.getCurrentController.getViewCursor
oVC.collapseToEnd 'Move view Cursor
oVC.gotoStartofLine(true)
nX = len(oVC.string) 'How many characters from the start of the line
nY = 0
'How many lines from top of page
nPage = oVC.getPage
while oVC.goUp(1,false) and oVC.getPage = nPage
nY = nY + 1
wend
thisComponent.currentController.select(mCurSelection) 'Restore current selection
finished:
on error goto 0
oDoc.unlockControllers
fnPosn = "(" & nx & ", " & nY & ")"
end function
Code : Tout sélectionner
sub testinsert()
Dim nom as string
nom = "signet1"
bookmark = ThisComponent.createInstance("com.sun.star.text.Bookmark")
bookmark.Name = nom
vc = ThisComponent.CurrentController.ViewCursor
vc.setString(nom)
ThisComponent.Text.InsertTextContent(vc,bookmark,True)
End Sub
'====================
'SOLUTION :
'Il semble que ça fasse l'affaire :
'Y a t il plus générique, plus pertinent ?
'===================
Code : Tout sélectionner
Sub TestWrite2Mouse()
WriteThis2MouseCursor("Bonjour les amis !")
End Sub
Sub WriteThis2MouseCursor(sLine As String)
'Create a text object
Set objText= ThisComponent.getText
set mCurSelection = ThisComponent.currentSelection ' Record current selection
'Locking controller prevents flicker. But under ALL circumstances must be unlocked
on local error goto finished:
ThisComponent.lockControllers
'Get the cursor object
oVC = ThisComponent.getCurrentController.getViewCursor
oVC.collapseToEnd 'Move view Cursor
oVC.gotoStartofLine(true)
'Inserting some Text
objText.insertString oVC, sLine, False
finished:
on error goto 0
ThisComponent.unlockControllers
End Sub