1. Zeile löschen

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

Moderator: Moderatoren

StefanJoachimsthaler
Beiträge: 5
Registriert: Di, 21.10.2008 10:56

1. Zeile löschen

Beitrag von StefanJoachimsthaler »

Hallo,
nach einem bestimmten Vorgang habe ich immer eine leere Zeile an erster Stelle in meinem Dokument.
Das ist auch definitiv so gewünscht.

Jetzt würde ich diese gerne aus einem Dokument entfernen.
Dazu habe ich auch eine Lösung geschrieben, die erstmal ganz gut funktioniert.

Code: Alles auswählen

objCursor.gotoStart(False)
objCursor.gotoNextParagraph(True)
objText.insertString(objCursor, "", True)

Beginnt das Dokument allerdings mit einer Tabelle, wurde diese immer komplett markiert und mit einem Leer-String überschrieben.
Dazu habe ich den Code folgendermaßen erweitert:

Code: Alles auswählen

objCursor.gotoStart(False)
objCursor.gotoNextParagraph(True)
If objCursor.getString().Trim <> "" Then
  objCursor.goLeft(1, True)
End If
objText.insertString(objCursor, "", True)
Allerdings wird die erste Leerzeile jetzt gar nicht entfernt, wenn das Dokument anschließend mit einer Tabelle beginnt.
Gibt es eine Möglichkeit den Cursor an die erste Stelle zu setzen und anschließend die "ENTF"-Taste zu simulieren?
Damit würde die erste Zeile entfernt werden und die Tabelle bestehen bleiben!

Vielen dank schonmal!
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: 1. Zeile löschen

Beitrag von DPunch »

Aloha

Wenn Du die Tabelle eindeutig identifizieren kannst, sie immer entweder direkt am Anfang vom Dokument oder eben nach der Leerzeile auftaucht, dann kannst Du es so probieren:

Code: Alles auswählen

oDoc = thisComponent
oTextTables = oDoc.TextTables
oMyTable = oTextTables.getByName("meineTabelle")
On Local Error Resume Next
oDoc.Text.removeTextContentBefore(oMyTable)
StefanJoachimsthaler
Beiträge: 5
Registriert: Di, 21.10.2008 10:56

Re: 1. Zeile löschen

Beitrag von StefanJoachimsthaler »

DPunch hat geschrieben:Aloha

Wenn Du die Tabelle eindeutig identifizieren kannst, sie immer entweder direkt am Anfang vom Dokument oder eben nach der Leerzeile auftaucht, dann kannst Du es so probieren:

Code: Alles auswählen

oDoc = thisComponent
oTextTables = oDoc.TextTables
oMyTable = oTextTables.getByName("meineTabelle")
On Local Error Resume Next
oDoc.Text.removeTextContentBefore(oMyTable)
Leider ist die Tabelle nicht identizierbar. Ist leider auch nicht immer vorhanden!
Gibt es eine möglichkeit zu prüfen, ob nach der ersten Leerzeile eine Tabelle kommt?
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: 1. Zeile löschen

Beitrag von DPunch »

Aloha

Dann fällt mir letztendlich auch nur der Weg über den DispatchHelper ein

Code: Alles auswählen

Sub RemoveEmptyLineBeforeTextTable
	oDoc = thisComponent
	oDoc.lockControllers
	oViewCursor = oDoc.CurrentController.getViewCursor
	oViewCursor.gotoStart(False)
	If NOT isEmpty(oViewCursor) Then
		oDoc.unlockControllers
		Exit Sub
	End If
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
	oDoc.unlockControllers
End Sub
Antworten