OOo-Automation: Überschreiben von Text zwischen zwei Textmarken

28/10/2010 - 10:54 von Borsdorf, Thomas | Report spam
Hi NG!

Ich will über meine Delphi-Anwendung, die OOo per OLE-Automation
steuert, den Text zwischen zwei Textmarken überschreiben.

Das tue ich momentan so (übersetzter Delphi-Code, Syntax entspricht
nicht unbedingt OOo-üblicher Syntax):

oCursor = oDocument.getCurrentController.getViewCursor
oAnchor = oDocument.getBookmarks.getByName(Bookmark1).getAnchor
oCursor.gotoRange(oAnchor, false)
oAnchor = oDocument.getBookmarks.getByName(Bookmark2).getAnchor
oCursor.gotoRange(oAnchor, true)
oText = oDocument.Text;
oText.insertString(oCursor, HierStehtDerText, false)

Das funktioniert soweit gut. Allerdings werden durch das Überschreiben
beide Textmarken gelöscht, da sie beide innerhalb der Markierung sind.

Und hier fàngt mein Problem an.

Meine Anwendung muss sowohl mit OOo als auch mit M$-Word funktionieren,
nur leider handhabt Word diesen Punkt anders. Word löscht nur die
Bookmark2, nicht aber die Bookmark1. Wahrscheinlich beginnt die
Markierung bei Word erst hinter der Bookmark1, bei OOo vor der Bookmark1.
Beim spàteren Aktualisieren des Dokumentes bekomme ich daher in OOo
Probleme weil die Bookmark1 ja nicht mehr existiert. Ich muss das also
irgendwie ausgleichen.

Leider kann ich die Bookmark1 nicht programmatisch wieder neu setzen, da
Markieren und Überschreiben in verschiedenen Prozeduren passieren und
ich beim Überschreiben die Textmarken nicht kenne. Außerdem kenne ich ja
die alte Position nicht mehr, denn der Cursor befindet sich ja hinter
dem eingefügten Text.

Gibt es eine Möglichkeit OOo beizubringen das die Markierung erst hinter
der Bookmark1 beginnt, die Bookmark1 also nicht mit markiert wird?
Oder gibt es die Möglichkeit die Markierung zu überschreiben ohne das
die Textmarken gelöscht werden? Vielleicht eine Art
"Kompatibilitàts-Einstellung" von OOo?

MfG Thomas.
 

Lesen sie die antworten

#1 Borsdorf, Thomas
16/11/2010 - 19:34 | Warnen spam
Ingrid schrieb am 28.10.2010 10:54:
Gibt es eine Möglichkeit OOo beizubringen das die Markierung erst hinter
der Bookmark1 beginnt, die Bookmark1 also nicht mit markiert wird?
Oder gibt es die Möglichkeit die Markierung zu überschreiben ohne das
die Textmarken gelöscht werden? Vielleicht eine Art
"Kompatibilitàts-Einstellung" von OOo?



Hat niemand eine Idee?
Ich würde gerne vermeiden die Makros bei einigen hundert Kunden
anzupassen, wenn die auf OOo umsteigen wollen.

MfG Thomas.

Ähnliche fragen