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
- Re: [de-users] LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion · OoOHWHOoO
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.