❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Zoom via Makro funktioniert nicht mehr in 4.0

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
oopa
Beiträge: 32
Registriert: Fr 5. Apr 2013, 06:43

Zoom via Makro funktioniert nicht mehr in 4.0

Beitrag von oopa » Fr 5. Apr 2013, 07:00

Ich bin gestern von LibO 3.6 auf 4.0 umgestiegen. Festgestellt habe ich inzwischen, dass die Makros, mit denen ich einen bestimmen Zoom-Faktor für die Bildschirmdarstellung festlege, nicht mehr korrekt funktionieren.

Das folgende Makro stammt noch aus alten (OOo)-Zeiten, hat bisher alle Portierungen klaglos überstanden:

Code: Alles auswählen

sub ZoomSeiteExtra
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Zoom.Value"
args1(0).Value = 130
args1(1).Name = "Zoom.ValueSet"
args1(1).Value = 28703
args1(2).Name = "Zoom.Type"
args1(2).Value = 0
dispatcher.executeDispatch(document, ".uno:Zoom", "", 0, args1())
end sub
Bei Verwendung in LibO 4.0 wird statt der direkten Umsetzung nur das Auswahlfenster für die Maßstabseinstellung gezeigt.
Ich habe daraufhin mit LibO 4.0 via Makro-Aufzeichnung ein neues Makro mit der gewünschten Funktionalität erzeugt.
Das sieht nun zwar etwas anders aus, liefert aber dasselbe unerwünschte Ergebnis:

Code: Alles auswählen

sub ZoomSeite2
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Zoom.Value"
args1(0).Value = Array(Array("Value",0,130,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ValueSet",0,28703,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Type",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(1).Name = "Zoom.ValueSet"
args1(1).Value = Array(Array("Value",0,130,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ValueSet",0,28703,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Type",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(2).Name = "Zoom.Type"
args1(2).Value = Array(Array("Value",0,130,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ValueSet",0,28703,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Type",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE))
dispatcher.executeDispatch(document, ".uno:Zoom", "", 0, args1())
end sub
Wenn ich nun statt einer fixen Maßstabsvorgabe in Prozent z.B. die Option "Seitenbreite" wähle, sieht die Sache anders aus. Zwar funktioniert auch in diesem Fall das alte Makro so (unbefriedigend) wie oben beschrieben, aber die Aufzeichnung mit LibO 4.0 liefert immerhin das:

Code: Alles auswählen

sub ZoomSeite1
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:ZoomPageWidth", "", 0, Array())
end sub
Das macht (natürlich) erst mal gar nichts, wenn ich das letzte "rem" aber entferne, macht es, was es soll.

Meine Frage: Kann mir jemand sagen, wie ich das Makro umstricken/gestalten muss, um z.B. einen Maßstab von 130% direkt umgesetzt zu bekommen?

pmoegenb

Re: Zoom via Makro funktioniert nicht mehr in 4.0

Beitrag von pmoegenb » Fr 5. Apr 2013, 08:40

oopa hat geschrieben: Meine Frage: Kann mir jemand sagen, wie ich das Makro umstricken/gestalten muss, um z.B. einen Maßstab von 130% direkt umgesetzt zu bekommen?
In diesem Forumsbereich nicht, aber möglicher Weise im Forumsbereich LibreOffice Programmierung.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Zoom via Makro funktioniert nicht mehr in 4.0

Beitrag von gogo » Fr 5. Apr 2013, 12:04

Code: Alles auswählen

thiscomponent.CurrentController.ViewSettings.ZoomValue = 100
einen Versuch wäre es wert ...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

oopa
Beiträge: 32
Registriert: Fr 5. Apr 2013, 06:43

Re: Zoom via Makro funktioniert nicht mehr in 4.0

Beitrag von oopa » Fr 5. Apr 2013, 13:07

Meinst du so?

Code: Alles auswählen

sub Zoom130
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
thiscomponent.CurrentController.ViewSettings.ZoomValue = 130
dispatcher.executeDispatch(document, ".uno:Zoom", "", 0, Array())
end sub
Falls ja: Funktioniert nicht. Ergebnis wie oben beschrieben: Es öffnet sich das Maßstabsauswahlfenster. :(

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Zoom via Makro funktioniert nicht mehr in 4.0

Beitrag von F3K Total » Fr 5. Apr 2013, 19:37

oopa hat geschrieben:Meinst du so?
Nein er meint so:

Code: Alles auswählen

Sub S_Zoom_150
    thiscomponent.CurrentController.ViewSettings.ZoomValue = 150
End Sub
und das funktioniert.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

oopa
Beiträge: 32
Registriert: Fr 5. Apr 2013, 06:43

Re: Zoom via Makro funktioniert nicht mehr in 4.0

Beitrag von oopa » Fr 5. Apr 2013, 20:24

Jaaa! Das funktioniert. Danke euch für die Hilfe! :D

Nachtrag:
Es funktioniert nicht mehr, sobald man das Dokument einmal z.B. mittels "Zoom Optimal" oder "Zoom Seitenbreite" im Maßstab verändert hat.
Nach etwas API-Lektüre die (vermutliche Ursache und auf jeden Fall die) Lösung gefunden:
Außer dem ZoomValue muss auch der ZoomType korrekt gesetzt sein. Beim manuellen Setzen des Maßstabs muss ZoomType den Wert 3 haben.
Bei einem neu angelegten Dokument scheint das die Voreinstellung zu sein, darum funktioniert es. Bei den Varianten "Zoom Optimal" etc. scheint ein anderer ZoomType gesetzt zu werden, so dass es danach nicht mehr klappt.

Damit ergibt sich als finale Fassung, die mit LibO 4.0 in allen Fällen funktioniert:

Code: Alles auswählen

sub Zoom130
    thiscomponent.CurrentController.ViewSettings.ZoomType = 3
    thiscomponent.CurrentController.ViewSettings.ZoomValue = 130
end sub


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten