Aktuell teste ich LO 3.5. Und offenbar wird im Gegensatz zu 3.4 Dispatchercode wieder ohne Murren ausgeführt (was mir bei meinem Einklebeproblem wenigstens eine kleine Sorge nimmt).
Trotzdem würde ich gerne ohne den Dispatcher auskommen wo immer das geht. Unter Rückgriff auf eine vorige Anfrage und den Recorder entstand dieser Code:
Code: Alles auswählen
Public Sub SpeichernUndPOS1
Dim MeinViewCursor As Object
Dim Dokument As Object
Dim Rahmen As Object
Dim StatusIndikator as Object
Dim Dokument2 As Object
Dim DisPatcher As Object
Dim Argument(1) As New com.sun.star.beans.PropertyValue
Dokument = ThisComponent
Rahmen = StarDesktop.GetCurrentFrame()
StatusIndikator = Rahmen.CreateStatusIndicator()
Dokument2 = ThisComponent.CurrentController.Frame
DisPatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
StatusIndikator.End()
StatusIndikator.Start("Lesezeichen sichern", 10)
StatusIndikator.SetValue(10)
MeinViewCursor = Dokument.GetCurrentController.ViewCursor
MeinViewCursor.GotoStartOfLine(0,False)
MeinViewCursor.String=" "
MeinViewCursor.String=""
Argument(0).Name = "Count"
Argument(0).Value = 1
Argument(1).Name = "Select"
Argument(1).Value = False
DisPatcher.ExecuteDispatch(Dokument2, ".uno:GoRight", "", 0, Argument())
DisPatcher.ExecuteDispatch(Dokument2, ".uno:Escape", "", 0, Array())
DisPatcher.ExecuteDispatch(Dokument2, ".uno:GoLeft", "", 0, Argument())
Dokument.Store(1)
StatusIndikator.End()
StatusIndikator.Start("", 0)
StatusIndikator.End()
End Sub
Mit MeinViewCursor gehe ich nach links an den Zeilenbeginn, füge ein Leerzeichen ein und nehme das zurück (die gewollte Änderung). Die Manipulation per StatusIndikator (nochmals danke für die Hilfe) ist etwas fürs Auge während eines länger dauernden Abspeicherns.
Leider tut MeinViewCursor nicht genau so wie ich will. Es wirkt, als bliebe dort die Shift-Taste gedrückt - Cursorbewgungen oder Mausklicks markieren den Text satt nur den Cursor zu bewegen. Da ESC das auflöst wollte ich ESC tippen lassen. Der Dispatchercode tut das - und doch war es erforderlich extra, wieder per Dispatcher aus u.g. Gründen, den Cursor zu bewegen. ESC allein genügt so wenig wie 1x Cursor-rechts + 1x Cursor-links.
Damit ergeben sich 2 Fragen:
• Kann ich die letztlich abgebildeten Schritte Pos1 - Leerzeichen - Backspace (- Speichern) auf andere Weise verwirklichen, ohne Dispatcher und besonders ohne die Klimmzüge den Cursor wieder zu befreien?
• Für andere Fälle und Gelegenheiten - wie kann ich ohne den Dispatcher mit dem Cursor unfallfrei navigieren (der ViewCursor hat ja offenbar Nebenwirkungen; Versuche das mit dem TextCursor zu entwirren scheiterten; mein Fehler?) und auch Tasten wie ESC, Backspace sowie normale Zeichen quasi tippen zu lassen?
Eric March