Seite 1 von 1

Fenstergröße (Writer) per Makro festlegen

Verfasst: So 9. Okt 2016, 18:29
von UliK
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

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

Verfasst: So 9. Okt 2016, 20:40
von mikele
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.

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

Verfasst: Mo 10. Okt 2016, 19:04
von UliK
Hallo mikele,
funktioniert - vielen Dank für den Tipp.

UliK