Seite 1 von 1
In welcher Einheit ist die Tabelle-Breite in Writer-Doku
Verfasst: Do, 22.07.2004 15:00
von tommy
Hallo, ich habe folgende Frage und zwar in welcher Einheit ist die Tabelle-Breite in Writer-Dokument?
Code: Alles auswählen
oEnum = oThisDoc.Text.createEnumeration
While oEnum.hasMoreElements()
oPara = oEnum.nextElement()
If goPara.supportsService("com.sun.star.text.TextTable") Then
MsgBox oPara.Width
End If
Wend
Ausgabe ist 115596.
Weiss es jemand?
Gruß
Tommy
Verfasst: Do, 22.07.2004 15:49
von HM
Hallo Tommy,
nach dem Basic-Programmierhandbuch von Sun wird die Tabellenbreite in 100stel Millimeter angegeben.
Gruß
Herbert
Verfasst: Do, 22.07.2004 16:06
von tommy
Hi Herbert,
danke für die schnelle Antwort! Wenn die Angabe in 100stel Millimeter ist, dann ist die Tabelle 1155 Millimeter breit? Das kann doch nicht sein, oder?
Gruß
Tommy
Verfasst: Do, 22.07.2004 16:17
von HM
Hallo Tommy,
das ist allerdings ziemlich breit.
Allerdings kann ich dir keine andere Antwort bietet.
Ich zitiere aus dem Hanbuch:
"Hier die wichtigsten Eigenschaften des Tabellen-Objektes:
...
- Width (Long) - absolute Breite der Tabelle in 100stel Millimeter."
So steht es in der deutschen Übersetzung StarOffice 7 Basic-Programmierhandbuch, die ich bei Sun heruntergeladen habe.
Ich könnte mir allenfalls erklären, dass die Übersetzer einen Fehler gemacht haben, dann allerdings durchgängig, da diese 100stel mm mehr als einmal erscheinen.
Gruß
Herbert
Verfasst: Do, 22.07.2004 16:41
von Stephan
Ich kann den Wert für das Einfügen einer "Standardtabelle" mit 115596 nachvollziehen. Den Grund sehe ich darin das die Tabellen auf Seitenbreite skalliert werden und wohl intern über diesen Breitenwert verfügen, auch wenn in den Tabelleneigenschaften für die Breite anderes angezeigt wird. Aber das ist nur meine Vermutung...
Wenn ich jedenfalls meine Tabelle manuell so skalliere da sie schmaler als der Satzspiegel ist liefert das Makro einen Wert von 8742 und meine Tabelle ist (laut Tabelleneigenschaftendialog) 87,4 mm breit.
Gruß
Stephan
Verfasst: Do, 22.07.2004 19:27
von tommy
Hi, danke für eure Antworten.
In der Tabelleneigenschaften ist die Breite 17cm angegeben. Durch Makro wird aber eine große Zahl (115596)ausgegeben. Wenn ich die Breite verkleine, dann liefert das Makro den richtigen Wert. Also wie kann man die tatsächliche Breite ermitteln, die das Makro so eine große Zahl wie oben liefert?
Gruß
Tommy
Verfasst: Do, 22.07.2004 20:11
von Stephan
Ich habe jetzt einige Werte durchprobiert und würde sagen das es sich so verhält wie ich es in meinem vorangegangenen post vermutet habe. Wenn man eine Tabelle über Einfügen>Tabelle einfügt ist diese immer real so breit wie der Satzspiegel, intern jedoch immer 115596/100. Der Wert 115596/100 ist quasi der Defaultwert für jede neue Tabelle, das sollte sich ändern lassen - nur wo?
Also wie kann man die tatsächliche Breite ermitteln, die das Makro so eine große Zahl wie oben liefert?
Ich würde meinen: Tabellenbreite ermitteln, wie von Dir vorgeschlagen und prüfen ob diese Breite größer als der Satzspiegel ist (unter Berücksichtigung 1/100 mm), wenn:
ja --> dann Tabelle so breit wie der Satzspiegel
nein --> dann Tabelle so breit wie ermittelt
Gruß
Stephan
Verfasst: Fr, 23.07.2004 11:47
von tommy
Hi Stephan,
danke für den Vorschlag. Wie ermittelt man die Breite des Satzspiegels?
Gruß
Tommy
Verfasst: Fr, 23.07.2004 13:31
von Stephan
Hallo Tommy,
Der Satzspiegel ist allgemein:
Blattbreite - (Breite rechter Rand) - (Breite linker Rand)
aber Du willst bestimmt einen Codeschnipsel

:
Code: Alles auswählen
oDoc = ThisComponent
oViewCursor = oDoc.CurrentController.getViewCursor()
oPageStyleName = oViewCursor.PageStyleName
oPageStyles = oDoc.StyleFamilies.getByName("PageStyles")
oStyle = oPageStyles.getByName(oPageStyleName)
satzspiegel = oStyle.Width-oStyle.LeftMargin-oStyle.RightMargin
'Satzspiegel in 1/100 mm
msgbox satzspiegel
irgendwie weicht die Berechnung teilweise um 1/1000mm ab, ich hoffe das stört nicht, denn ich weiß nicht wie ich es beseitigen kann.
Gruß
Stephan
Verfasst: Fr, 23.07.2004 15:21
von tommy
Hi Stephan,
danke für den Code, das hat mir weiter geholfen.
Gruß
Tommy