Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Hallo Regina,

bezüglich Deinem "BUG Report"

• https://bugs.documentfoundation.org/show_bug.cgi?id=107806

zu der Anmerkung

• "[...] The height and width are no longer in 1/100 mm, but you need a magic number to get the desired size. [...]"

habe ich eben (rein zufällig) beim Stöbern in

• LibreOffice Hilfe
•• LibreOffice Basic
••• Kommentare
•••• Makros und Programmierung
••••• Allgemeine Informationen und Verwendung der Benutzerschnittstelle
•••••• LibreOffice Basic-Glossar
••••••• Twips

folgendes gefunden:

"[...] Ein Twip ist eine bildschirmunabhängige Maßeinheit, die verwendet wird, um auf allen Anzeigesystemen eine konsistente Position und Größe von Bildschirmelementen zu definieren. Ein Twip ist 1/1440 Zoll oder 1/20 DTP-Punkt (pt). Auf ein Zoll kommen 1440 und auf einen Zentimeter etwa 567 Twips. [...]"

Auf WIKIPEDIA ( https://de.wikipedia.org/wiki/Twip ) dann noch etwas ausführlicher:

"[...] Ein Twip ist eine angloamerikanische Längeneinheit und bezeichnet die Teilung "TWentieth of an Inch Point", also 1/20 Punkt = 1/1440 Zoll.

Das Twip ist eine extrem feine Maßeinheit:

• 1 twip = 17,6389241667372 μm
• 1 mm = 56,6928 twip

Die Einheit Twip findet Verwendung in Berechnungen von Schrift und Grafik im Computerbereich, zum Beispiel im Graphics Device Interface (GDI) von Microsofts Windows-Betriebssystem, im Dateiformat Windows Metafile (WMF), im Textformat Rich Text Format (RTF) oder im Druckdatenformat AFP.

Anzumerken ist hierbei, dass der Twip, wie er z.B. in den Parametern von Microsoft Windows verwendet wird, auch andere Werte annehmen kann. Diese sind abhängig von der Druckauflösung. Die o.g. Formel gilt für den Fall 72 dpi. Hier hat ein Punkt die Größe 1/72: 1/20 * 1/72 = 1/1440

Somit ergibt sich im Falle von 96 dpi durch 1/1440 inch * 96 dots per inch eine Größe von 1/15 dots. [...]"

Somit ist klar, wie die von Dir empirisch ermittelte "magic number 567" zu verstehen ist:

• 1 [mm] = 56,6928 [twip]
• 1 [cm] = 10 [mm] = 566,928 [twip] ≈ 567 [twip]

Angewendet auf die unoCommands ".uno:RowHeight" und ".uno:ColumnWidth" ergeben sich nun nachvollziehbar die unterschiedlichen Parameter-Werte bezüglich "LO 5.2.7.2" und "LO 5.3.3.2", wenn in beiden LO-Versionen eine Zelle "C3" erzeugt wird, die 10 cm hoch und 10 cm breit ist (s.u.).

Somit bleibt jetzt eigentlich nur noch als BUG, dass unter "LO 5.3.3.2" die Zeilen- und Spalten-Indizierung mit unterschiedlichen Start-Werten beginnt, was doch recht ungewöhnlich erscheint:

Zeile "1": Index=1   und   Spalte "A": Index=0
Zeile "2": Index=2   und   Spalte "B": Index=1
Zeile "3": Index=3   und   Spalte "C": Index=2

Gruß
Hans-Werner


1. "Libre Office Version 5.2.7.2"

Sub TestUnoCommand_LO5272

Dim oC as Object : oC = ThisComponent.CurrentController
Dim oF as Object : oF = oC.Frame
Dim oS as Object : oS = oC.ActiveSheet
Dim oD as Object : oD = createUnoService("com.sun.star.frame.DispatchHelper")

Dim Column as Integer
Dim Row as Integer
Dim RowHeight as Long
Dim ColumnWidth as Long

Dim VP(0) as New com.sun.star.beans.PropertyValue

Column = 2 ' Kommentar: Identische Indizierung bezüglich "Row=" für Zelle "C3" Row = 2 ' Kommentar: Identische Indizierung bezüglich "Column=" für Zelle "C3"
oC.Select(oS.getCellByPosition(Column,Row))

RowHeight = 100
VP(0).Name = "RowHeight"
VP(0).Value = RowHeight * 100 ' Kommentar: 100 x 100 [1/100mm] = 10000 [1/100mm] = 100 [mm] = 10 [10cm]
oD.executeDispatch(oF,".uno:RowHeight","",0,VP())

ColumnWidth = 100
oC.Select(oS.getCellByPosition(Column,Row))
VP(0).Name = "ColumnWidth"
VP(0).Value = ColumnWidth * 100 ' Kommentar: 100 x 100 [1/100mm] = 10000 [1/100mm] = 100 [mm] = 10 [10cm]
oD.executeDispatch(oF,".uno:ColumnWidth","",0,VP())

End Sub


2. "LibreOffice Version 5.3.3.2"

Sub TestUnoCommand_Using_LO5332

Dim oC as Object : oC = ThisComponent.CurrentController
Dim oF as Object : oF = oC.Frame
Dim oD as Object : oD = createUnoService("com.sun.star.frame.DispatchHelper")

Dim Column as Integer
Dim Row    as Integer
Dim Height as Long
Dim Width  as Long

Dim VP(1) as New com.sun.star.beans.PropertyValue

Row = 3 ' Kommentar: Unterschiedliche Indizierung bezüglich "Column=" für Zelle "C3"
Height = 10
VP(0).Name = "Row"
VP(0).Value = Row
VP(1).Name = "Height"
VP(1).Value = Height * 567 ' Kommentar: 10 x 567 [twip] = 10 x 1 [cm] = 10 [cm]
oD.executeDispatch(oF,".uno:RowHeight","",0,VP())

Column = 2' Kommentar: Unterschiedliche Indizierung bezüglich "Row=" für Zelle "C3"
Width = 10
VP(0).Name = "Column"
VP(0).Value = Row
VP(1).Name = "Width"
VP(1).Value = Width * 567 ' Kommentar: 10 x 567 [twip] = 10 x 1 [cm] = 10 [cm]
oD.executeDispatch(oF,".uno:ColumnWidth","",0,VP())

End Sub


--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.