Text an Lesezeichen überschreiben

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Text an Lesezeichen überschreiben

von lysienne » Do, 05.01.2006 12:10

Danke toxitom

bin halt doch nur blond :oops:

von Toxitom » Do, 05.01.2006 11:58

Hey lysienne,
ich hatte vergessen zu erwähnen, das die Bookmarks innerhalb einer Tabelle sind.
Tuia, soche "kleinigkeiten" sollte man erwähnen :wink:

Die sind ziemlich entscheident.

OK, dann lad dir am die "Rechnungsvorlage" von -> hier herunter. Dort werden an Bookmarks in einer Tabelle die laufenden Rechnungsnummern eingetragen. Dort findest du dann auch die fehlenden Codeteile.

Gruss
Thomas

von lysienne » Mi, 04.01.2006 23:05

Danke für deine Hilfe.
So funktioniert es innerhalb von "normalem text".
ich hatte vergessen zu erwähnen, das die Bookmarks innerhalb einer Tabelle sind. Und es schmeisst es mir einen Laufzeitfehler.


Habe hier im Forum noch einen Beitrag gefunden der mit 2 Bookmarks arbeitet. Geht aber auch nicht in einer Tabelle.


Noch eine Idee?

von Toxitom » Mi, 04.01.2006 11:56

Hey lysienne,
Wenn ich das Makro nochmal ausführe wird der neue Text für den alten gesetzt. Ich will ab er das dieser überschrieben wird.
Ich denke, du meinst nicht "für" sondern "vor"? Das wäre das normale Verhalten.
Natürlich kannst du auch bestehenden Text ersetzen.

Code: Alles auswählen

oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor) 
Mit dieser Zeile erzeugst du einen Text-Cursor am Punkt oBookmark.Anchor. Willst du jetzt die nächsten 5 Zeichen "markieren", so bewegst du den Cursor um fünf Zeichen vorwärts und markierst diese:

Code: Alles auswählen

oCursor.goRight(5, true)
Wenn du jetzt am Cursor den Sting einfügst, werden die markierten Zeichen überschrieben.

Die Problematik in deinem Fall hat jedoch zwei "Tücken":
Erstens musst du wissen, was für ein "alter" Text da drin steht, um ihn entsprechend zu markieren. Einfach, wenn es sich immer nur um ein Wort handelt, oder bis zum Ende des Absatzes geht..., kompliziert, wenn es beliebige Strings innerhalb von Fliesstext sind.
Zweitens: Durch bewegen des Cursors und markieren des Bereiches wird die Textmarke mit markiert und dadurch überschrieben (sprich: gelöscht). Die musst du dann entweder neu einfügen oder insgesamt dein Dokument anders planen, zum Beispiel so, dass nach der Bookmark zunächst ein Leerzeichen folgt und dann erst der Text. Dann kannst du sie immer erhalten:

Code: Alles auswählen

oBookmark = oBookmarks.getByName("Asp")
oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
oCursor.goRight(1, false)  'bewegt den Cursor um 1 Zeichen vorwärts
REM oCursor.gotoEndOfWord(true) 'bewegt den Cursor um ein Wort
oCursor.string = "Hans"   'ersetzt das Wort durch Hans
Wichtig Hierbei: Das erste Zeichen nach der Bookmark sollte eben ein Leerzeichen sein!

Gruss
Thomas

Text an Lesezeichen überschreiben

von lysienne » Mi, 04.01.2006 10:27

Hallo

ich habe ein Makro das text an einem Lesezeichen einfügt. Wenn ich das Makro nochmal ausführe wird der neue Text für den alten gesetzt. Ich will ab er das dieser überschrieben wird.

hier mein Code

dim oDoc as Object
dim obookmarks as Object
dim obookmark as Object
dim oCursor as Object

oDoc=thisComponent
oBookmarks = oDoc.getBookmarks()

oBookmark = oBookmarks.getByName("Asp")
oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
oCursor.string = "Hans"

#####

Nach oben