Probleme mit Texttabelle (.Width)

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

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Probleme mit Texttabelle (.Width)

Beitrag von Stephan »

Hallo,

in einem bestehenden Textdokument (odt) möchte ich eigentlich nur die Breite der ersten Spalte der Texttabelle bestimmen in der sich aktuell der Cursor befindet.

Scheinbar ist die direkte Bestimmung dieser Spaltenbreiten garnicht so einfach, denn bisher finde ich nur den Weg sie so zu lesen:
https://forum.openoffice.org/en/forum/v ... mn#p213666

was dann einen Wert ergibt indem ich durch Umrechnung, unter Beachtung von .TableColumnRelativeSum die Breite der gewünschten Spalte bekomme WENN ich die Gesamtbreite der Tabelle kenne. Letztere sollte zu ermitteln sein mit:

<Tabellenobjekt>.Width

allein klappt das augenscheinlich nicht immer. Die angehängte Beispieldatei enthält eine Beispieltabelle (die ich aus einem bestehenden Dokument kopiert habe) und bei der:

Code: Alles auswählen

Sub Test()
	v_cur = ThisComponent.CurrentController.ViewCursor
	Msgbox v_cur.TextTable.Width
End Sub
den Wert 115596 liefert, der falsch ist.

Wenn ich geringfügige Veränderungen an den Tabellen Eigenschaften z.B. unter Register "Tabelle" Abstände-nach rechts vornehme. liefert das gleiche Makro problemlos den richtigen Wert für .Width, komischerweise selbst dann wenn ich erst den Wert geringfügig ändere, den Eigenschaftsdialog schließe, sofort den Eigenschaftsdialog wieder öffne und den ursprünglichen Wert wiederherstelle (geprüft mit z.B. -2,41 auf -2,36 gestellt und zurück auf -2,41).

Was ist da los?

Fehler beobachtet unter OO und LO.


Gruß
Stephan
Dateianhänge
Testdatei_Tabellenbreite.odt
(12.17 KiB) 131-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Probleme mit Texttabelle (.Width)

Beitrag von F3K Total »

Hallo Stephan,
habe jetzt keine Zeit zu forschen, aber in angehängter Datei habe ich mich vor kurzem mit dem Thema "Texttables"auseinandergesetzt und es geschafft, eine Spalte, die die Seitenbreite auffüllt, anzuhängen und dabei die Breite der ursprünglichen Spalten beizubehalten.
Die Breite der ersten Spalte steckt also im Makro irgendwo drin, vielleicht hilft dir die Datei.

Gruß R
Dateianhänge
Tabellenspalte_zufuegen.odt
(12.29 KiB) 117-mal heruntergeladen
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Probleme mit Texttabelle (.Width)

Beitrag von Toxitom »

Hallo Stephan,

die Tabellen-Breite einer Texttabelle lässt sich nicht eindeutig über den Wert .width auslesen. Die Breite gibt es nämlich eigentlich gar nicht, sie ist immer intern berechnet!

Die Beite einer Texttabelle wird immer auf den verfügbaren Platz ausgedehnt - also auf die Breite des Textbereiches der Seitenvorlage. Den musst Du herauslesen!

Dann schaust Du Dir die die linken und rechten Ränder der Tabelle an (leftmargin, rightmargin) und daraus kannst Du dann die 100% (10000) Tabellebreite bestimmen. Und dann geht es weiter mit den TableSeperators... die kannst Du ja auslesen:) Daraus bastelste Dir dann die Breite der Spalte zusammen.

Im Makro-Handbuch gibt´s ein Beispiel dafür.

Viel Spass
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Probleme mit Texttabelle (.Width)

Beitrag von Stephan »

Die Breite der ersten Spalte steckt also im Makro irgendwo drin, vielleicht hilft dir die Datei.
danke, aber leider nein, insofern das Makro auch <Tabellenobjekt>.Width nutzt und es also zum Fehler kommt wenn ich es auf meine Tabelle anwende.


Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Probleme mit Texttabelle (.Width)

Beitrag von Stephan »

die Tabellen-Breite einer Texttabelle lässt sich nicht eindeutig über den Wert .width auslesen. Die Breite gibt es nämlich eigentlich gar nicht, sie ist immer intern berechnet!
Letzteres stimmt, steht auch sinngemäß so in der IDL-Referenz.
Ersteres ist hingegen eine Art der Kuriosität, offensichtlich aus OOo-Zeiten, wo ich nicht weiß was das soll, entweder die Eigenschaft funktioniert oder man sollte sie weglassen.
Dann schaust Du Dir die die linken und rechten Ränder der Tabelle an (leftmargin, rightmargin) und daraus kannst Du dann die 100% (10000) Tabellebreite bestimmen. Und dann geht es weiter mit den TableSeperators... die kannst Du ja auslesen:) Daraus bastelste Dir dann die Breite der Spalte zusammen.
Danke. Ich hatte das schon befürchtet.


Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Probleme mit Texttabelle (.Width)

Beitrag von Stephan »

Könntest du mal den Code posten, der dein XML File öffnet und vorbereitet?
Ich habe keinen derartigen Code, weil ich keinen brauche, soweit es das Thema des Threads hier betrifft, denn das Dokument wird normal per Hand geöffnet.

Dokumente allgemein lassen sich so per Code öffnen:
http://www.dannenhoefer.de/faqstarbasic ... ffnen.html



Gruß
Stephan
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Probleme mit Texttabelle (.Width)

Beitrag von Karolus »

@Stephan
LenDierce ist ein Spam(bot?) siehe auch https://de.openoffice.info/viewtopic.ph ... 49#p284649
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Antworten