🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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. 🤗

Fenstergröße (Writer) per Makro festlegen

Alles zur Programmierung im LibreOffice.
Antworten
UliK
Beiträge: 10
Registriert: Sa 10. Dez 2011, 15:07

Fenstergröße (Writer) per Makro festlegen

Beitrag von UliK » So 9. Okt 2016, 18:29

Hallo,
mit LO-Base habe ich eine Datenbank bei der mehrere Formulare unterschiedlicher Größe von einem Startformular aufgerufen werden. Die Formulare sind immer so groß, dass der anzuzeigende Inhalt ohne zu scrollen passt. Mit OpenOffice habe ich das mit folgendem kleinen Makro bewerkstelligt:

Code: Alles auswählen

Function ScreenRes(Richtung as String) as Integer
Dim iWidth as Integer
Dim iHeight as Integer
Dim oDisplay as Object
Dim oDisplayAccess as Object
'Sub Setze_Fenster_in_cm
    oDisplayAccess = CreateUnoService("com.sun.star.awt.DisplayAccess")
    oDisplay = oDisplayAccess.getByIndex(0)
    aScreen = oDisplay.WorkArea
    Select Case Richtung
    	Case "X"
	    	ScreenRes = aScreen.Width
    	Case "Y"
    	  	ScreenRes = aScreen.Height
    	Case "F"
    		ScreenRes = aScreen.Width / TWIPSPERPIXELX / 2.54
    	Case Else
    		msgbox "Falscher Parameter"
			exit function
	End Select  
End Function
Der Aufruf eerfolgt über folgende Prozedur:

Code: Alles auswählen

Public Sub FensterXY(Breite, Hoehe, Titel)
Dim iX, iY as Integer
Dim iB, iH as Integer
Dim oFrame as Object
Dim oWin as Object
	iB = Breite * TWIPSPERPIXELX * 2.54
	iH = Hoehe * TWIPSPERPIXELY * 2.54
	iX = (ScreenRes("X") - iB) / 2
	iY = (ScreenRes("Y") - iH) / 2
	oFrame = StarDesktop.getCurrentFrame()
	oWin = oFrame.getContainerWindow()
	oFrame.setTitle Titel
	oWin.setPosSize(iX, iY, iB, iH, 15)
End Sub
Breite, Höhe und Titel im jeweiligen Formular beim Aufruf gesetzt.

Jetzt kommt das Problem:
Bei Openoffice funktioniert das super!
Bei Libreoffice bekomme ich beim Aufruf des UNOService

Code: Alles auswählen

oDisplayAccess = CreateUnoService("com.sun.star.awt.DisplayAccess")
eine Fehlermeldung.
"BASIC-Laufzeitfehler. Objektvariable nicht belegt."

Woran kann das liegen???

UliK

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: Fenstergröße (Writer) per Makro festlegen

Beitrag von mikele » So 9. Okt 2016, 20:40

Hallo,
soweit ich es googlen konnte, wurde der undokumentierte Service "com.sun.star.awt.DisplayAccess" in LO (4?) entfernt.
Alternativ liefert

Code: Alles auswählen

otoolkit = createUnoService("com.sun.star.awt.Toolkit")
aWorkRect = otoolkit.getWorkArea()
den rechteckigen Arbeitsbereich.
Gruß,
mikele

UliK
Beiträge: 10
Registriert: Sa 10. Dez 2011, 15:07

Re: Fenstergröße (Writer) per Makro festlegen

Beitrag von UliK » Mo 10. Okt 2016, 19:04

Hallo mikele,
funktioniert - vielen Dank für den Tipp.

UliK


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