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


Hallo Regina,

Deine Antworten decken sich mit den von mir gemachten Erfahrungen (siehe unten: "ERFAHRUNGSBERICHT"). Mein Fragen/Feststellungen in der vorherigen Mail waren leider etwas (arg) missverständlich, denn sie bezogen sich auf "LO 5.2.7.2" - deshalb eben sicher auch kein Problem mit unterschiedlichen Bildschirmauflösungen - sorry !

BugReports habe ich nicht durchsucht, weil mir nicht genau klar ist, was unter "LO 5.3.3.2" denn nun wirklich fehlerhaft ist und was nicht (s.u.).

Gruß
Hans-Werner


E R F A H R U N G S B E R I C H T


Mit LO 5.3.3.2 hat sich die Nutzung der unoCommands ".uno:RowHeight" und ".uno:ColumnWidth" geändert:

1. Jetzt (LO 5.3.3.2) müssen 2 Parameter übergeben werden, vorher (LO 5.2.7.2) musste 1 Parameter übergeben werden. 2. Jetzt (LO 5.3.3.2) ist der Maßstabsfaktor 567stel-WasAuchImmer (von Regina empirisch ermittelt), vorher (LO 5.2.7.2) war der Maßstabsfaktor 100stel-Millimeter. 3. Mit (LO 5.3.3.2) ist die Indizierung von Spalten (Spalte "A": Index=0) und Zeilen (Zeile "1": Index=1) unterschiedlich.

Zu 1: Das ist sicherlich eine gewollte Änderung und kein Fehler.
Zu 2: So ein "krummer" Maßstabsfaktor könnte ein Fehler sein.
Zu 3: Unterschiedliche Indizierung von Spalten und Zeilen sieht schon arg nach einem Fehler aus.


Nachfolgend 2 Makros zum Nachvollziehen oben kommunizierter Sachverhalte:


1. "Libre Office Version 5.2.7.2"

1.1. "uno:RowHeight"

1.1.1. Es muss ein Parameter übergeben werden:
VP(0).Name = "RowHeight" und VP(0).Value = 'zahl' => Höhe der Zeile

1.1.2. Die Maßeinheit beträgt 100stel-Millimeter:
VP(0).Value = 100 * 100 erzeugt eine Zeile von 10 cm Höhe.

1.2. "uno:ColumnWidth"

1.2.1: Es muss ein Parameter übergeben werden:
VP(0).Name = "ColumnWidth" und VP(0).Value = 'zahl' => Breite der Spalte

1.2.2: Die Maßeinheit beträgt 100stel-Millimeter:
VP(0).Value = 100 * 100 erzeugt eine Spalte von 10 cm Breite.

1.3. Das nachfolgende Makro bewirkt in der Tabelle folgendes:

+ Die Zeile "3" wird 10 cm hoch.
+ Die Spalte "C" wird 10 cm breit.
+ Die Zelle "C3" wird 10 cm hoch und 10 cm breit.

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
Row = 2
oC.Select(oS.getCellByPosition(Column,Row))

RowHeight = 100
VP(0).Name = "RowHeight"
VP(0).Value = RowHeight * 100
oD.executeDispatch(oF,".uno:RowHeight","",0,VP())

ColumnWidth = 100
oC.Select(oS.getCellByPosition(Column,Row))
VP(0).Name = "ColumnWidth"
VP(0).Value = ColumnWidth * 100
oD.executeDispatch(oF,".uno:ColumnWidth","",0,VP())

End Sub


2. "LibreOffice Version 5.3.3.2"

2.1. uno:RowHeight

2.1.1. Es müssen zwei Parameter übergeben werden:
VP(0).Name = "Row" und VP(0).Value = 'zahl' => Auswahl der Zeile
VP(1).Name = "Height" und VP(1).Value = 'zahl'  => Angabe der Zeilenhöhe

2.1.2 Die Zeilen-Indizierung beginnt bei 1:
VP(0).Value = 3 indiziert somit in der Tabelle die 3. Zeile ("3").

2.1.3. Die Maßeinheit (567) für die Zeilenhöhe ist nicht (wirklich) nachvollziehbar:
VP(1).Value = 10 * 567 erzeugt eine Zeile von 10 cm Höhe.

2.2. uno:ColumnWidth

2.2.1. Es müssen zwei Parameter übergeben werden:
VP(0).Name = "Column" und VP(0).Value = 'zahl' => Auswahl der Spalte
VP(1).Name = "Width" und VP(1).Value = 'zahl'  => Breite der Spalte

2.2.2. Die Spalten-Indizierung beginnt bei 0:
VP(0).Value = 2 indiziert somit in der Tabelle die 3. Spalte ("C").

2.2.3. Die Maßeinheit (567) für die Spaltenbreite ist nicht (wirklich) nachvollziehbar:
VP(1).Value = 10 * 567 erzeugt eine Spalte von 10 cm Breite.

2.3. Das nachfolgende Makro bewirkt in der Tabelle folgendes:

+ Die Zeile "3" wird 10 cm hoch.
+ Die Spalte "C" wird 10 cm breit.
+ Die Zelle "C3" wird 10 cm hoch und 10 cm breit.

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
Height = 10
VP(0).Name = "Row"
VP(0).Value = Row
VP(1).Name = "Height"
VP(1).Value = Height * 567
oD.executeDispatch(oF,".uno:RowHeight","",0,VP())

Column = 2
Width = 10
VP(0).Name = "Column"
VP(0).Value = Row
VP(1).Name = "Width"
VP(1).Value = Width * 567
oD.executeDispatch(oF,".uno:ColumnWidth","",0,VP())

End Sub


------ Originalnachricht ------
Von: "Regina Henschel" <rb.henschel@t-online.de>
An: users@de.libreoffice.org
Gesendet: 12.05.2017 20:06:00
Betreff: Re: [de-users] LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

Hallo Hans-Werner,

OoOHWHOoO schrieb:
Hallo Regina,

erst mal herzlichen Dank für Deine Unterstützung.

Dein Makro bestätigt meine vorher geäußerte Vermutung:

Anstatt einem Parameter ("LO 5.2.7.2 (x64)" - nur die Höhe bzw. Breite, Zellenauswahl muss man vorher machen) muss man jetzt zwei Parameter ("LO
5.3.3.2 (x64)" - Auswahl der Zelle und Angabe der Höhe bzw. Breite)
übergeben.

"RowHeight" und "ColumnWidth" werden in Hundertstel-Millimeter
angegeben, zumindest unter "LO 5.2.7.2 (x64)", wird unter "LO 5.3.3.2
(x64)" sicherlich auch so sein.

Bei mir war das nicht so.


Bei Deinem Makro müssten sich also folgende Werte in der Tabelle ergeben
haben:

RowHeight = 2 'cm (siehe unten)
VP(0).Name = "Row"
VP(0).Value = 3 ' Da die Zählung bei 0 beginnt, sollte es in der Tabelle
die Zeile "4" gewesen sein. Richtig ?

Nein, es war Zeile 3.

VP(1).Name = "Height"
VP(1).Value = RowHeight * 567 'magic number

RowHeight * 567 = 2 * 567 = 1134 [Hundertstel-Millimeter] = 11,34 [mm] =
1,13 [cm] - War die neue Zeilenhöhe 1,13 cm ?

Nein, die Höhe war 2,00cm.


ColumnWidth = 3 'cm (siehe unten)
VP(0).Name = "Column"
VP(0).Value = 2 ' Da die Zählung bei 0 beginnt, sollte es in der Tabelle
die Spalte "C" gewesen sein. Richtig ?

Nein, es war Spalte B.

VP(1).Name = "Width"
VP(1).Value = ColumnWidth * 567

ColumnWidth * 567 = 3 * 567 = 1701 [[Hundertstel-Millimeter] = 17,01
[mm] = 1,70 [cm] - War die neue Spaltenbreite 1,70 cm ?

Nein, die Spaltenbreite war 3cm.


Warum Du "567 durch Probieren" gefunden hast (und wozu) kann nicht
nachvollziehen. Ich nehme immer (den Faktor) 100, dann sind die Angaben
für "RowHeight" und "ColumnWidth" als Angaben in mm zu verstehen.

Vielleicht geht aber auch noch irgendwo die Bildschirmauflösung ein? Ich habe 1920x1080 und benutze "Mittel" = 125% (Windows 7).

Hast du schon geguckt, ob vielleicht schon ein Bugreport existiert?

Mit freundlichem Gruß
Regina

-- 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


--
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.