Textmarke

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Textmarke

Beitrag von moritz »

Hallo,
ist es wirklich so, daß mit Basic- Makros Textmarken in Writer nur außerhalb von Tabellen funktionieren?
Ich habe eine Textmarke innerhalb einer Tabelle, die ich manuell ganz korrekt anspringen kann. Mit dem Makro funktioniert das nur, wenn die Marke außerhalb einer Tabelle ist. Die Marke wird innerhalb der Tabelle zwar ordentlich gefunden, wenn ich dort aber den sichtbaren Cursor platzieren will, kommt eine Fehlermeldung "Basic- Laufzeitfehler", ... "Message .", also ohne genaue Fehlerangabe.
oSichtbarerCursor = oDoc.getCurrentController().getViewCursor()
Bookmark=oDoc.Bookmarks.getByName("weiter_im_Text") -> bis hierher i.O.
oDocCursor = oDoc.Text.createTextCursorByRange(Bookmark.Anchor) -> Fehlermeldung
oSichtbarerCursor.gotoRange(oDocCursor, FALSE)
Kann man das Problem irgendwie umgehen?
Vielen Dank
Moritz
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Textmarke

Beitrag von Toxitom »

Hey Moritz,
nein, das geht natürlich auch in allen anderen Bereichen - außerhalb des fliessenden Textes. Nur eben anders....

Der Fehler liegt eben genau auch hier :

Code: Alles auswählen

oDocCursor = oDoc.Text.createTextCursorByRange(Bookmark.Anchor) -> Fehlermeldung
im ...Text... - denn die Tabelle ist ja nun kein "Text" mehr, insofern kanst du auf dem Objekt auch keinen Textcursor mit Anker Bookmark erzeugen (der Anker führt zur Fehlermeldung).

Was genau willst du denn erreichen? Den sichtbaren Cursor auf die Bookmark setzen? Text dort einfügen? Meiner Ansicht brauchst du die Zeile mit dem Textcursor doch gar nicht - du kannst doch gleich das Ankerobjekt der Bookmark als Sprungstelle für den Sichtcursor benuzten, oder?

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Textmarke

Beitrag von Toxitom »

Hey Moritz,

noch zur Ergänzung: Falls du wissen willst, wo sich deine Bookmark befindet (denn davon hängt es ab, wie du den Textcursor erzeugst), dann kannst du das folgende Makro benutzen:

Code: Alles auswählen

sub PositionBookmark
	
	oBM = thisComponent.getBookmarks().getByName("NameDerTextmarke").getAnchor()
	If Not IsEmpty(oBM.TextTable) then 
		s = "in einer Text-Tabelle."
	ElseIf Not IsEmpty(oBM.TextFrame) then s = "in einem Textrahmen."
	ElseIf Not IsEmpty(oBM.TextSection) then s = "in einem Textbereich."
	ElseIf Not IsEmpty(oBM.TextField) then s = "am Anfang eines Textfeldes"
	ElseIf oBM.getText.ImplementationName = "SwXFootnote" then s = "in einer Fussnote."
	ElseIf oBM.getText.ImplementationName = "SwXEndnote" then s = "in einer Endnote."
	ElseIf oBM.getText.ImplementationName = "SwXHeadFootText" then s = "in der Kopf- oder Fusszeile."
	Else s = "voraussichtlich in normalen Text."
	EndIf
	MsgBox "Die ""Bookmark"" befindet sich " & s
end sub

Die Reihenfolge der If-Abfragen ist recht wichtig. Ähnliches benutzt di auch, um die Position des View-Cursors rauszufinden ;-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Re: Textmarke

Beitrag von moritz »

Hallo, Thomas,vielen Dank für Deine umfangreiche Hilfe. Ich möchte den sichtbaren Cursor an die Bookmark setzen um dann ganz normal (ohne Makro) weiter Text zu schreiben (sozusagen am Anfang eines Kurzbriefes nach der Anrede).
Ich denke, daß ich es so hinbekomme. Die Unterschiede zwischen normalem Text und Text in einer Tabelle muß ich mir genauer ansehen.
Moritz
Antworten