Textpassage löschen

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: Textpassage löschen

von Toxitom » Do, 05.01.2006 12:05

Hey lysienne,
Liegt es villeicht daran das die beiden Bookmarks innerhalb einer tabelle liegen.
Ja, siehe auch anderen Post.

In dem Fall musst du den Textcursor innerhalb der Tabellenzelle erzeugen - nicht im Textteil.
Also die Zeile
Cursor = ThisComponent.Text.CreateTextCursor()
Muss anders aussehen!
Zum Beispiel:

Code: Alles auswählen

oCell=ThisComponent.TextTables(0).getCellByName("C1")	cursor=oCell.createTextCursorByRange(oBookmark.anchor)
Hier wird der Cursor in der Zelle "C1" der ersten Texttabelle erzeugt und dann am Bookmark-Anker plaziert.

Gruss
Thomas

genau was ich suche

von lysienne » Mi, 04.01.2006 22:33

Hallo

Code ist genau das was ich suche.
Aber bei mir schmeisst das Makro einen Ausnahmefehler. Und zwar bei der Code zeile.

Cursor.gotorange(bookmark1, False)

Liegt es villeicht daran das die beiden Bookmarks innerhalb einer tabelle liegen.

mein Code:
Cursor = ThisComponent.Text.CreateTextCursor()

bookmark1 = thiscomponent.Bookmarks.getByName("Asp").Anchor
bookmark2 = thiscomponent.Bookmarks.getByName("Asp_end").Anchor

Cursor.gotorange(bookmark1, False)
Cursor.gotorange(bookmark2, True)

Cursor.String = "hans"


Fehler:
Es ist eine Exception aufgetreten.
Com.sun.star.uno.RuntimeException.
Message:.

von harryh99 » Mi, 30.11.2005 17:50

Hallo Toxitom.

Vielen Dank für die Antwort. Habe jetzt am Ende noch ein Cursor.Left(1, false) und Cursor.Right(1, true) eingefügt und danach mit Cursor.String =""; das eine Zeichen auch noch gelöscht. Klappt alles super.

Vielen Dank nochmal und Gruß

Harryh99

von Toxitom » Mi, 30.11.2005 13:21

Hallo Benamin,

na, dann hast du doch schon alles, was du braucht. Füge einfach eine Zeile hinzu, das sollte es dan auch schon gewesen sein.
Aber wie gesagt - könnte sein, dass deine Bookmark damit mit gelöscht wird. Da musst du ein wenig experimentieren :wink:

Code: Alles auswählen

Cursor = ThisComponent.Text.createTextCursor()

Bookmark = thiscomponent.Bookmarks.getByName("Adressfeld").Anchor
Bookmark2 = thiscomponent.Bookmarks.getByName("Adressfeldende").Anchor
Cursor.gotorange(Bookmark, False)
Cursor.gotorange(Bookmark2, True)
...

Cursor.String = adressblock
Der Cursor behält sich seine einmal zuigewiesene Position. Gehst du dann zur nächsten, kannst du den Schalte auf True stellen, dann wird von der Ausgangsposition bis zur Zielposition alles markiert (beim Textcursor nicht sichtbar!).
Weist du nun einen neuen String zu, wird der markierte Inhalt überschrieben - eben so wie im realen Writer....

Gruss
Thomas

von harryh99 » Mi, 30.11.2005 11:21

Hallo Toxitom.

Mein Sourcecode sieht folgendermaßen aus:

Cursor = ThisComponent.Text.createTextCursor()

Bookmark = thiscomponent.Bookmarks.getByName("Adressfeld").Anchor
Bookmark2 = thiscomponent.Bookmarks.getByName("Adressfeldende").Anchor
Cursor.gotorange(Bookmark, False)

...

Cursor.String = adressblock


Solch einen Befehl zum Markieren habe ich schon gesucht, allerdings nicht gefunden.

Gruß und Danke

Harryh99

von Toxitom » Mi, 30.11.2005 11:15

Hey Harry,

na, wenn du schon zwei Bookmarks hast, kannst du zuerst den Cursor auf Bookmark1 plazieren. Von dort aus gehst du zu Bookmark2 und setzt den Expanse-Flag (der zweite Parameter) auf true, dadurch wird der überstrichene Text "markiert". Jetzt kannst du den neuen Text schreiben -dadurch wird der bestehende überschrieben. Aber teste das zunächst aus: Wahrscheinlich musst du vom Ende-Bookmark ein Zeichen zurück gehen, sonst wird die Endemarke gleich mit ersetzt - dann funktioniert das beim zweiten mal nichts mehr.
Für Details, poste deinen Makrocode - dann könne wir dran "rumpfriemeln" :wink:

Gruss
Thomas

Textpassage löschen

von harryh99 » Mi, 30.11.2005 10:42

Hallo.

Ich habe das Problem, dass ich gerne eine Textpassage (Adressblock) in einem Writer-Dokument über ein Makro in Openoffice Basic befüllen möchte. Wenn ich das Makro ein zweites mal ausführen, wir der bereits befüllte Teil jedoch nicht ersetzt sondern nach unten verschoben. Daher suche ich eine Möglichkeit, die alte Textpassage bei jedem Aufruf zu löschen. Ich suche mir über thiscomponent.Bookmarks.getByName("Adressfeld").Anchor eine Textmarke und schreibe ab dort über Cursor.String den Text in das Dokument. ich habe auch eine zweite Textmarke (Adressfeldende) gesetzt, die das Ende des Adressfeldes markieren soll. Jetzt wäre eine Funktion schön, die mir zwischen den beiden Textmarken den Text löscht. Gibt es so etwas oder gibt es andere Möglichkeiten, mein Problem zu lösen?

Danke und Gruß

Harry

Nach oben