[Erledigt] Texttabelle: Umrandung per Makro steuern

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

Moderator: Moderatoren

juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

[Erledigt] Texttabelle: Umrandung per Makro steuern

Beitrag von juetho »

Hallo,

ich erstelle per Makro ein Textdokument mit mehreren Texttabellen (jeweils eine Spalte), die sich jeweils über zwei bis vier Seiten erstrecken. Die Tabelle selbst soll keine Linien enthalten; jede Tabellenzeile soll nur eine Linie unten haben. Das funktioniert fast wunschgemäß, zunächst für eine Tabelle insgesamt:

Code: Alles auswählen

	rem Begrenzung unterhalb einer jeden Zeile vorbereiten
	Dim noline as new com.sun.star.table.BorderLine
	Dim withLine as new com.sun.star.table.BorderLine
	withLine.outerLineWidth = 30
	dim tableborder as new com.sun.star.table.TableBorder
	tableborder.BottomLine = noline
	tableborder.TopLine = noline
	tableborder.HorizontalLine = noline
	newtable.TableBorder = tableborder
Und dann in einer Schleife (die auch noch anderes erledigt) bei jeder Zeile:

Code: Alles auswählen

					currentCell = newTable.getCellByPosition(0,x4)
					rem die Umrandung festsetzen
					With currentCell
						.topBorder = noline
						.leftBorder = noline
						.rightBorder = noline
						.bottomBorder = withLine
					end with
Aber an der Trennung erhält die nächste Zeile auch oben eine Linie.
Fachzeugnisse Rahmenfehler.odg
linke Seite in Ordnung, rechte Seite falsch
(20.07 KiB) 31-mal heruntergeladen
Ich habe festgestellt:
  • Es funktioniert mit der Einstellung Tabelle >> Tabelleneigenschaften >> Umrandung "Benachbarte Linienstile zusammenführen" deaktivieren.
  • Frage: Mit welcher Einstellung kann ich das per Makro festlegen?
Danke! Jürgen
Zuletzt geändert von juetho am Di, 27.04.2010 16:28, insgesamt 1-mal geändert.
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Texttabelle: Umrandung per Makro steuern

Beitrag von DPunch »

Aloha

Versuch es mal mit

Code: Alles auswählen

newTable.CollapsingBorders = False
(API: Service TextTable)
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Texttabelle: Umrandung per Makro steuern

Beitrag von juetho »

Vielen Dank, das war ein doppelt wichtiger Hinweis!

Allgemein habe ich jetzt eine passende Übersicht über Klassen und Eigenschaften (und irgendwo stehen sicher auch die Methoden).

Konkret ist CollapsingBorders die passende Eigenschaft. Aber es hat eine Reihe von Tests benötigt, bis ich festgestellt habe:
  • Zuerst muss die Tabelle mit insertTextContent in das Textdokument eingefügt werden. An allen "früheren" Stellen hatte es nicht die gewünschte Wirkung.
  • Erst danach ist es sinnvoll, CollapsingBorders auf false zu setzen.
Vielleicht kann das noch jemand erklären, damit ich so etwas auch in anderen Zusammenhängen berücksichtigen kann. Ansonsten erkläre ich die Frage für "Erledigt".

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [Erledigt] Texttabelle: Umrandung per Makro steuern

Beitrag von DPunch »

Aloha
juetho hat geschrieben:Allgemein habe ich jetzt eine passende Übersicht über Klassen und Eigenschaften (und irgendwo stehen sicher auch die Methoden).
Die Methoden "verstecken" sich hinter den Interfaces, die der entsprechende Service beeinhaltet und rekursiv erbt.
  • Zuerst muss die Tabelle mit insertTextContent in das Textdokument eingefügt werden. An allen "früheren" Stellen hatte es nicht die gewünschte Wirkung.
  • Erst danach ist es sinnvoll, CollapsingBorders auf false zu setzen.
Meinst Du damit, dass eine on-the-fly erzeugte Tabelle erst im Dokument-Model sein muss, damit die Eigenschaft wirksam wird?
Wenn ja, dann würde ich jetzt mal ins Blaue raten, dass die TextTable vor dem Einfügen weder ein Model noch einen View hat, und somit alle die Erscheinung betreffenden Eigenschaften noch nicht zur Verfügung stehen.
Das Model als solches wird vermutlich tatsächlich erst erzeugt, wenn die Tabelle in einem Dokument "untergekommen" ist.

(Näheres zu Models und Views (und Controls) übrigens unter The Model-View Paradigm)
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: [Erledigt] Texttabelle: Umrandung per Makro steuern

Beitrag von juetho »

DPunch hat geschrieben:Meinst Du damit, dass eine on-the-fly erzeugte Tabelle erst im Dokument-Model sein muss, damit die Eigenschaft wirksam wird?
Genau so scheint es zu sein.
(Näheres zu Models und Views (und Controls) übrigens unter...)
Mal sehen, wann ich mich damit befasse. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Antworten