Libre Office

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

Open Office
Antworten