von eBayer » Mo, 12.10.2009 19:42
Hallo Bert,
das Problem hatte ich auch, zumal sich mit jeder Bearbeitung des Formulars ohne erkennbare Regel die Größe verändert.
Über die Feststellung der Bildschirmauflösung habe wir ja bereits miteinander geschrieben.... ich habe diese in einer INI-Datei hinterlegt.
Ich habe deshalb folgendes getan: (ist umständlich, aber eine bessere Lösung habe ich nicht gefunden)
1. Das Formular optimal im EditModus ausgerichtet und mir dann vom Formular die Größe verraten lassen
Dafür habe ich ein kleines Makro geschrieben welches ich einmalig in der MainRoutine jedes Formulars aufrufe:
Sub ShowWindowSize(ThisComponent)
Dim aWindowSize As New com.sun.star.awt.Rectangle ' make a special Variable
aWindowSize = ThisComponent.CurrentController.Frame.ContainerWindow.getPosSize
msgbox aWindowSize.width ' wird bei iBreit verwendet
msgbox aWindowSize.height ' wird bei iHoch verwendet
End Sub
2. Die auf diese Weise festgestellte Größe verwende ich beim Aufruf des Formulars
oForm = container.loadComponentFromURL(sForm,"_blank",0,args())
xForm = oForm.getCurrentController().getFrame().getContainerWindow()
xForm.setPosSize( iXPos, iYPos, iBreit, iHoch , 15 )
iXPos und iYPos habe ich aufgrund der Bildschirmauflösung und der Felder iBreit und iHoch errechnet, um das Formular zu zentrieren.
3. danach kommt dann, erst in der Main-Routine des gestarteten Formulars, die Routine setZoom() zum Einsatz.
Damit wird dann das Formular in den unter 2. definerten Rahmen hineingezoomt.
Das Ergebnis: egal, ob jemand im Writer mit der ScrollMaus gezoomt hat oder auch nicht, wird immer die optimale Formulargröße mit dem optimalen Zoomfaktor hergestellt.
Gruß eBayer
Hallo Bert,
das Problem hatte ich auch, zumal sich mit jeder Bearbeitung des Formulars ohne erkennbare Regel die Größe verändert.
Über die Feststellung der Bildschirmauflösung habe wir ja bereits miteinander geschrieben.... ich habe diese in einer INI-Datei hinterlegt.
Ich habe deshalb folgendes getan: (ist umständlich, aber eine bessere Lösung habe ich nicht gefunden)
1. Das Formular optimal im EditModus ausgerichtet und mir dann vom Formular die Größe verraten lassen
Dafür habe ich ein kleines Makro geschrieben welches ich einmalig in der MainRoutine jedes Formulars aufrufe:
Sub ShowWindowSize(ThisComponent)
Dim aWindowSize As New com.sun.star.awt.Rectangle ' make a special Variable
aWindowSize = ThisComponent.CurrentController.Frame.ContainerWindow.getPosSize
msgbox aWindowSize.width ' wird bei iBreit verwendet
msgbox aWindowSize.height ' wird bei iHoch verwendet
End Sub
2. Die auf diese Weise festgestellte Größe verwende ich beim Aufruf des Formulars
oForm = container.loadComponentFromURL(sForm,"_blank",0,args())
xForm = oForm.getCurrentController().getFrame().getContainerWindow()
xForm.setPosSize( iXPos, iYPos, iBreit, iHoch , 15 )
iXPos und iYPos habe ich aufgrund der Bildschirmauflösung und der Felder iBreit und iHoch errechnet, um das Formular zu zentrieren.
3. danach kommt dann, erst in der Main-Routine des gestarteten Formulars, die Routine setZoom() zum Einsatz.
Damit wird dann das Formular in den unter 2. definerten Rahmen hineingezoomt.
Das Ergebnis: egal, ob jemand im Writer mit der ScrollMaus gezoomt hat oder auch nicht, wird immer die optimale Formulargröße mit dem optimalen Zoomfaktor hergestellt.
Gruß eBayer