LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

classic Classic list List threaded Threaded
11 messages Options
OoOHWHOoO OoOHWHOoO
Reply | Threaded
Open this post in threaded view
|

LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

Hallo,

unter "LO 5.3.3.2 (x64) @ Windows 7 Home Premium (x64)" scheinen die
"uno"-Kommandos "uno:ColumnWidth" und "uno:RowHeight" nicht mehr korrekt
zu funktionieren. Anstatt dass die im Makro übergebene ColumnWidth bzw.
RowHeigth angewendet wird erscheint jeweils ein PopUp-Menü. Unter "LO
5.2.7.2 (x64) @ Windows 7 Home Premium (x64)" tritt diese Fehlfunktion
nicht auf.

Die Frage ist nun, hat sich mit der neuen LO-Version die Syntax für die
beiden "uno"-Kommandos geändert oder liegt ein BUG vor.

Weiter unten zum Nachvollziehen ein Basic Makro mit den beiden
"uno"-Kommandos und Ablaufbeschreibungen für "LO 5.2.7.2 (x64)" bzw. "LO
5.3.3.2 (x64)".

Gruß
Hans-Werner

1   "LibreOffice Basic"-Makro

Sub TestUnoCommand

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 = 0
Row = 0
RowHeight = 20

oC.Select(oS.getCellByPosition(Column,Row))

VP(0).Name = "RowHeight"
VP(0).Value = RowHeight * 100

oD.executeDispatch(oF,".uno:RowHeight","",0,VP())

Column = 1
Row = 1
ColumnWidth = 40

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   Ablauf unter "LibreOffice 5.2.7.2 (x64) @ Windows 7 Home Premium
(x64)"

2.1   Neue, leere Tabelle
2.2   Zeilenhöhe Zelle "A1" = 0,45 cm und Spaltenbreite Zelle "B2" =
2,26 cm
2.3   Ausführen "LibreOffice Basic"-Makro "TestUnoCommand"
2.4   Zeilenhöhe Zelle "A1" = 2,00 cm und Spaltenbreite Zelle "B2" =
4,00 cm
2.5   Die "uno"-Kommandos werden korrekt ausgeführt. Es wird kein
PopUp-Menü angezeigt.

3   Ablauf unter "LibreOffice 5.3.3.2 (x64) @ Windows 7 Home Premium
(x64)

3.1   Neue, leere Tabelle
3.2   Zeilenhöhe Zelle "A1" = 0,45 cm und Spaltenbreite Zelle "B2" =
2,26 cm
3.3   Ausführen "LibreOffice Basic"-Makro "TestUnoCommand"
3.4   Anzeige PopUp-Menü "Zeilenhöhe"
3.5   MausKlick auf [Abbrechen]
3.6   Anzeige PopUp-Menü "Spaltenbreite"
3.7   MausKlick auf [Abbrechen]
3.8   Zeilenhöhe Zelle "A1" = 0,45 cm und Spaltenbreite Zelle "B2" =
2,26 cm
3.9   Die "uno"-Kommandos werden NICHT korrekt ausgeführt. Stattdessen
werden PopUp-Menüs angezeigt.



--
Liste abmelden mit E-Mail an: [hidden email]
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
Regina Henschel Regina Henschel
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

Hallo,

ich habe gerade keine Zeit es durchzutesten, aber guck mal ab Zeile 638
in
http://opengrok.libreoffice.org/xref/core/sc/qa/unit/tiledrendering/tiledrendering.cxx.
Da findest du die erwarteten Parameter.


OoOHWHOoO schrieb:

> Hallo,
>
> unter "LO 5.3.3.2 (x64) @ Windows 7 Home Premium (x64)" scheinen die
> "uno"-Kommandos "uno:ColumnWidth" und "uno:RowHeight" nicht mehr korrekt
> zu funktionieren. Anstatt dass die im Makro übergebene ColumnWidth bzw.
> RowHeigth angewendet wird erscheint jeweils ein PopUp-Menü. Unter "LO
> 5.2.7.2 (x64) @ Windows 7 Home Premium (x64)" tritt diese Fehlfunktion
> nicht auf.
>
> Die Frage ist nun, hat sich mit der neuen LO-Version die Syntax für die
> beiden "uno"-Kommandos geändert oder liegt ein BUG vor.

Wenn etwas vorher funktionierte und nun nicht mehr, sollte man das immer
melden. Selbst wenn die Änderung beabsichtigt war, läge ja der Mangel
vor, dass diese Änderung nicht kommuniziert und nicht dokumentiert wurde.

Mit freundlichem Gruß
Regina

--
Liste abmelden mit E-Mail an: [hidden email]
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
OoOHWHOoO OoOHWHOoO
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

Hallo Regina

danke für den Tipp mit
"http://opengrok.libreoffice.org/xref/core/sc/qa/unit/tiledrendering/tiledrendering.cxx".

Da habe ich folgendes gefunden:

    645     // Col 3, Tab 0
    646     int nOldWidth = rDoc.GetColWidth(static_cast<SCCOL>(2),
static_cast<SCTAB>(0), false);
    647
    648     aArgs[0].Name = OUString::fromUtf8("Column");
    649     aArgs[0].Value <<= static_cast<sal_Int16>(3);
    650     aArgs[1].Name = OUString::fromUtf8("Width");
    651     aArgs[1].Value <<= static_cast<sal_uInt16>(nOldWidth + 100);
    652     comphelper::dispatchCommand(".uno:ColumnWidth", aArgs);
    653
    654     int nNewWidth = rDoc.GetColWidth(static_cast<SCCOL>(2),
static_cast<SCTAB>(0), false);
    655     CPPUNIT_ASSERT(nNewWidth > nOldWidth);
    656
    657     // Row 5, Tab 0
    658     int nOldHeight = rDoc.GetRowHeight(static_cast<SCROW>(4),
static_cast<SCTAB>(0), false);
    659
    660     aArgs[0].Name = OUString::fromUtf8("Row");
    661     aArgs[0].Value <<= static_cast<sal_Int16>(5);
    662     aArgs[1].Name = OUString::fromUtf8("Height");
    663     aArgs[1].Value <<= static_cast<sal_uInt16>(nOldHeight + 100);
    664     comphelper::dispatchCommand(".uno:RowHeight", aArgs);
    665
    666     int nNewHeight = rDoc.GetRowHeight(static_cast<SCROW>(4),
static_cast<SCTAB>(0), false);
    667     CPPUNIT_ASSERT(nNewHeight > nOldHeight);

Wenn ich das mit "meinen" "LO 5.2.7.2 (x64)"-Aufrufen

oC.Select(oS.getCellByPosition(Column,Row))
VP(0).Name = "ColumnWidth"
VP(0).Value = ColumnWidth * 100

beziehungsweise

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

vergleiche, so scheint es in "LO 5.3.3.2 (x64)" eine Änderung bei der
Parameter-Anzahl gegeben zu haben.

Der einzelne Parameter wird in zwei Parameter aufgesplittet:

VP(0).Name = "RowHeight" => aArgs[0].Name = OUString::fromUtf8("Row");
und aArgs[1].Name = OUString::fromUtf8("Height");

beziehungsweise

VP(0).Name = "ColumnWidth" => aArgs[0].Name =
OUString::fromUtf8("Column"); und aArgs[1].Name =
OUString::fromUtf8("Width");

Also müsste ich mein Makro so umformulieren:

Column = 1
' Row = 1 <= überflüssig
ColumnWidth = 40

' oC.Select(oS.getCellByPosition(Column,Row)) <= überflüssig, da
"Column"-Auswahl jetzt durch VP(0) !

VP(0).Name = "Column"
VP(0).Value = Column
VP(1).Name = "Width"
VP(1).Value = ColumnWidth * 100

oD.executeDispatch(oF,".uno:ColumnWidth","",0,VP())

' Column = 0 <= überflüssig
Row = 0
RowHeight = 20

' oC.Select(oS.getCellByPosition(Column,Row)) <= überflüssig, da
"Row"-Auswahl jetzt durch VP(0) !

VP(0).Name = "Row"
VP(0).Value = Row
VP(1).Name = "Height"
VP(1).Value = RowHeight * 100

' oD.executeDispatch(oF,".uno:RowHeight","",0,VP())

Würdest Du das auch so interpretieren ?

Zum Testen habe ich jetzt direkt keine Zeit.

Gruß
Hans-Werner


------ Originalnachricht ------
Von: "Regina Henschel" <[hidden email]>
An: [hidden email]
Gesendet: 12.05.2017 11:02:54
Betreff: Re: [de-users] LO 5.3.3.2 - Basic Makro - unoCommand -
RowHeight und ColumnWidth - Fehlfunktion

>Hallo,
>
>ich habe gerade keine Zeit es durchzutesten, aber guck mal ab Zeile 638
>in
>http://opengrok.libreoffice.org/xref/core/sc/qa/unit/tiledrendering/tiledrendering.cxx.
>Da findest du die erwarteten Parameter.
>
>
>OoOHWHOoO schrieb:
>>Hallo,
>>
>>unter "LO 5.3.3.2 (x64) @ Windows 7 Home Premium (x64)" scheinen die
>>"uno"-Kommandos "uno:ColumnWidth" und "uno:RowHeight" nicht mehr
>>korrekt
>>zu funktionieren. Anstatt dass die im Makro übergebene ColumnWidth
>>bzw.
>>RowHeigth angewendet wird erscheint jeweils ein PopUp-Menü. Unter "LO
>>5.2.7.2 (x64) @ Windows 7 Home Premium (x64)" tritt diese Fehlfunktion
>>nicht auf.
>>
>>Die Frage ist nun, hat sich mit der neuen LO-Version die Syntax für
>>die
>>beiden "uno"-Kommandos geändert oder liegt ein BUG vor.
>
>Wenn etwas vorher funktionierte und nun nicht mehr, sollte man das
>immer melden. Selbst wenn die Änderung beabsichtigt war, läge ja der
>Mangel vor, dass diese Änderung nicht kommuniziert und nicht
>dokumentiert wurde.
>
>Mit freundlichem Gruß
>Regina
>
>-- Liste abmelden mit E-Mail an: [hidden email]
>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: [hidden email]
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
Regina Henschel Regina Henschel
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

Hallo Hans-Werner,

das folgende Makro funktioniert bei mir, und zwar jeweils auf dem
aktiven Tabellenblatt.
Die Zahl 567 habe ich durch Probieren gefunden. Ich habe keine Ahnung,
mit welcher Einheit dort gearbeitet wird.

Mit freundlichem Gruß
Regina


sub Cellsize

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 RowHeight as Long
Dim ColumnWidth as Long
Dim VP(1) as New com.sun.star.beans.PropertyValue

RowHeight = 2 'cm
VP(0).Name = "Row"
VP(0).Value = 3
VP(1).Name = "Height"
VP(1).Value = RowHeight * 567 'magic number
oD.executeDispatch(oF,".uno:RowHeight","",0,VP())

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

End Sub

--
Liste abmelden mit E-Mail an: [hidden email]
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
OoOHWHOoO OoOHWHOoO
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

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

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

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.

Warum Du "Dim VP(1) as New com.sun.star.beans.PropertyValue" formuliert
hast und nicht "Dim VP(0) as New com.sun.star.beans.PropertyValue" kann
ich nicht nachvollziehen, aber vielleicht war es auch nur ein Vertipper
Deinerseits.

Ich werde jetzt nochmals ausführlich testen und dann noch einen
"Abschluss-Bericht" absetzen, damit andere User die Änderung leicht
nachvollziehen können.

Gruß und Dank,
Hans-Werner

------ Originalnachricht ------
Von: "Regina Henschel" <[hidden email]>
An: [hidden email]
Gesendet: 12.05.2017 14:27:11
Betreff: Re: [de-users] LO 5.3.3.2 - Basic Makro - unoCommand -
RowHeight und ColumnWidth - Fehlfunktion

>Hallo Hans-Werner,
>
>das folgende Makro funktioniert bei mir, und zwar jeweils auf dem
>aktiven Tabellenblatt.
>Die Zahl 567 habe ich durch Probieren gefunden. Ich habe keine Ahnung,
>mit welcher Einheit dort gearbeitet wird.
>
>Mit freundlichem Gruß
>Regina
>
>
>sub Cellsize
>
>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 RowHeight as Long
>Dim ColumnWidth as Long
>Dim VP(1) as New com.sun.star.beans.PropertyValue
>
>RowHeight = 2 'cm
>VP(0).Name = "Row"
>VP(0).Value = 3
>VP(1).Name = "Height"
>VP(1).Value = RowHeight * 567 'magic number
>oD.executeDispatch(oF,".uno:RowHeight","",0,VP())
>
>ColumnWidth = 3 'cm
>VP(0).Name = "Column"
>VP(0).Value = 2
>VP(1).Name = "Width"
>VP(1).Value = ColumnWidth * 567
>oD.executeDispatch(oF,".uno:ColumnWidth","",0,VP())
>
>End Sub
>
>-- Liste abmelden mit E-Mail an: [hidden email]
>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: [hidden email]
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
HansWernerHerold HansWernerHerold
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

In reply to this post by OoOHWHOoO
Hallo Regina,

bezüglich

"[...] Warum Du "Dim VP(1) as New com.sun.star.beans.PropertyValue"
formuliert hast und nicht "Dim VP(0) as New
com.sun.star.beans.PropertyValue" kann ich nicht nachvollziehen, aber
vielleicht war es auch nur ein Vertipper Deinerseits. [...]"

habe ich mich vertan.

Da ja 2 Array-Elemente benötigt werden ist natürlich  "Dim VP(1) as New
com.sun.star.beans.PropertyValue" richtig.

Sorry & Gruß
Hans-Werner
--
Liste abmelden mit E-Mail an: [hidden email]
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
Regina Henschel Regina Henschel
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

In reply to this post by OoOHWHOoO
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: [hidden email]
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
OoOHWHOoO OoOHWHOoO
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

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" <[hidden email]>
An: [hidden email]
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: [hidden email]
>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: [hidden email]
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
Regina Henschel Regina Henschel
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

Hallo Hans-Werner,

ich mal einen Bugreport geschrieben.
https://bugs.documentfoundation.org/show_bug.cgi?id=107806

Mit freundlichem Gruß
Regina

--
Liste abmelden mit E-Mail an: [hidden email]
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
OoOHWHOoO OoOHWHOoO
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

Hallo Regina,

super - danke.

Allerdings hatte ich festgestellt, dass die Indizierung von Spalten und
Zeilen unterschiedlich ist - die eine beginnt bei 0 und die andere
beginnt bei 1 - aber nicht, dass beide bei 1 beginnen:

"[...] 3. Mit (LO 5.3.3.2) ist die Indizierung von Spalten (Spalte "A":
Index=0) und Zeilen (Zeile "1": Index=1) unterschiedlich. [...]"

Oder habe ich mich da vertan ? Ich kann es im Moment nicht testen, da
ich jetzt "LO 5.3.3.2" nicht mehr zur Verfügung habe. Aber Du solltest
es ja mit meinem Makro in der letzten Mail testen können:


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


Gruß
Hans-Werner

------ Originalnachricht ------
Von: "Regina Henschel" <[hidden email]>
An: [hidden email]
Gesendet: 12.05.2017 21:50:14
Betreff: Re: [de-users] LO 5.3.3.2 - Basic Makro - unoCommand -
RowHeight und ColumnWidth - Fehlfunktion

>Hallo Hans-Werner,
>
>ich mal einen Bugreport geschrieben.
>https://bugs.documentfoundation.org/show_bug.cgi?id=107806
>
>Mit freundlichem Gruß
>Regina
>
>-- Liste abmelden mit E-Mail an: [hidden email]
>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: [hidden email]
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
OoOHWHOoO OoOHWHOoO
Reply | Threaded
Open this post in threaded view
|

Re: LO 5.3.3.2 - Basic Makro - unoCommand - RowHeight und ColumnWidth - Fehlfunktion

In reply to this post by OoOHWHOoO
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: [hidden email]
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