Formulargröße per Makro festlegen
Moderator: Moderatoren
Formulargröße per Makro festlegen
Hallo zusammen,
ich möchte gerne die Größe der Base-Formulare per Makro beienflussen können!
Hintergrund: wenn ein Bericht aufgerufen wird, der bei PreView gezoomt wird, merkt sich ooBase offensichtlich den Zoomfaktor und öffnet dann alle folgenden Formulare in veränderter Größe. Ich würde gerne erreichen wollen, daß die Base-Formulare immer in der designeten Größe geöffnet werden.
Hat jemand dazu eine Idee? Ich habe zwar schon Hinweise auf Size und Position gefunden, komme damit aber nicht klar. Ich hätte mir vorgestellt, daß meine Dokumente eine Eigenschaft "Size" haben, finde aber den Einstieg, um selber zu forschen, leider nicht.
Danke für möglichst zahlreiche Tipps!
eBayer
ich möchte gerne die Größe der Base-Formulare per Makro beienflussen können!
Hintergrund: wenn ein Bericht aufgerufen wird, der bei PreView gezoomt wird, merkt sich ooBase offensichtlich den Zoomfaktor und öffnet dann alle folgenden Formulare in veränderter Größe. Ich würde gerne erreichen wollen, daß die Base-Formulare immer in der designeten Größe geöffnet werden.
Hat jemand dazu eine Idee? Ich habe zwar schon Hinweise auf Size und Position gefunden, komme damit aber nicht klar. Ich hätte mir vorgestellt, daß meine Dokumente eine Eigenschaft "Size" haben, finde aber den Einstieg, um selber zu forschen, leider nicht.
Danke für möglichst zahlreiche Tipps!
eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Formulargröße per Makro festlegen
MIt den Eigenschaften POS und SIZE gab es irgendwie Probleme (2.4.x), ich habe dann .setPosSize genutzt:
Hilft Dir das weiter?
Code: Alles auswählen
With oFormular.getCurrentController().getFrame().getContainerWindow()
.setPosSize( .PosSize.x, .PosSize.y , 800, 600 , com.sun.star.awt.PosSize.SIZE )
End With
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Formulargröße per Makro festlegen
Danke Winfried,
bin grad vor 1 Stunde fündig geworden... gerinfügig anders Coding, aber es funktioniert gut.
Jetzt fehlt mir noch eine Möglichkeit, die Bildschirmauflösung in Pixel abzufragen. Dann kann ich die Formulare nach Änderung der Größe auch noch zentrieren.
Kannst Du vielleicht nochmal in Deiner Schatzkiste wühlen? Ich habe noch nichts verwertbares gefunden.
Besten Gruß und einen schönen Sonntag
eBayer
bin grad vor 1 Stunde fündig geworden... gerinfügig anders Coding, aber es funktioniert gut.
Jetzt fehlt mir noch eine Möglichkeit, die Bildschirmauflösung in Pixel abzufragen. Dann kann ich die Formulare nach Änderung der Größe auch noch zentrieren.
Kannst Du vielleicht nochmal in Deiner Schatzkiste wühlen? Ich habe noch nichts verwertbares gefunden.
Besten Gruß und einen schönen Sonntag
eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Formulargröße per Makro festlegen
Kap. 10.6 in meiner Ausgabe von Andrews Makrodokument
für Dialoge - ich bin mir aber sicher, dass Du das für forms anpassen kannst 
Code: Alles auswählen
Sub CenterDialogOnScreen
Dim CurPosSize As New com.sun.star.awt.Rectangle
Dim oFrame
oFrame = ThisComponent.getCurrentController().Frame
FramePosSize = oFrame.getComponentWindow.PosSize
xWindowPeer = oDialog.getPeer()
CurPosSize = oDialog.getPosSize()
WindowHeight = FramePosSize.Height
WindowWidth = FramePosSize.Width
DialogWidth = CurPosSize.Width
DialogHeight = CurPosSize.Height
iXPos = ((WindowWidth/2) - (DialogWidth/2))
iYPos = ((WindowHeight/2) - (DialogHeight/2))
oDialog.setPosSize(iXPos, iYPos, DialogWidth, _
DialogHeight, com.sun.star.awt.PosSize.POS)
oDialog.execute()
End Sub

Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Formulargröße per Makro festlegen
Danke, ich halte Dich auf dem Laufenden!
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: Formulargröße per Makro festlegen
Hallo,
sorry, wenn ich diesen Thread nochmal aufwärme. In dem Beispiel wird der Dialog zum Fenster der Anwendung zentriert. Das klappt so ja auch. Aber wie zentriere ich den Dialog im Verhältnis zur Bildschirmauflösung? Ich hab schon gesucht, aber bisher nicht herausgefunden, wie ich die aktuelle Bildschirmauflösung abfragen kann. Die müssten ja vom System erfragt werden können. Wenn ich die hätte, wäre es ja auch kein Problem, den Dialog zentriert auf dem Bildschirm anzuzeigen. Hat jemand einen Tipp für mich?
Gruss
Bert
sorry, wenn ich diesen Thread nochmal aufwärme. In dem Beispiel wird der Dialog zum Fenster der Anwendung zentriert. Das klappt so ja auch. Aber wie zentriere ich den Dialog im Verhältnis zur Bildschirmauflösung? Ich hab schon gesucht, aber bisher nicht herausgefunden, wie ich die aktuelle Bildschirmauflösung abfragen kann. Die müssten ja vom System erfragt werden können. Wenn ich die hätte, wäre es ja auch kein Problem, den Dialog zentriert auf dem Bildschirm anzuzeigen. Hat jemand einen Tipp für mich?
Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
Re: Formulargröße per Makro festlegen
Hallo Bert,
ich habe lange gesucht, bin aber leider nicht fündig geworden.
Ich habe mein Problem dann so gelöst, daß ich die jweilige Bildschirmauflösung in einer INI-Datei hinterlege. Dann kann ich beliebig damit experimentieren und rechnen.
Gruß eBayer
ich habe lange gesucht, bin aber leider nicht fündig geworden.
Ich habe mein Problem dann so gelöst, daß ich die jweilige Bildschirmauflösung in einer INI-Datei hinterlege. Dann kann ich beliebig damit experimentieren und rechnen.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: Formulargröße per Makro festlegen
Hallo eBayer,eBayer hat geschrieben:Ich habe mein Problem dann so gelöst, daß ich die jweilige Bildschirmauflösung in einer INI-Datei hinterlege. Dann kann ich beliebig damit experimentieren und rechnen.
ganz schön tricky. Da muss man erst mal darauf kommen. Ist zwar nicht gerade das Gelbe vom Ei, aber ziemlich praktisch. Vielleicht mache ich das erstmal auch so. Es müsste doch aber auch möglich sein, die Bildschirmauflösung per Basic abzufragen. So etwas kann normalerweise jede Programmiersprache. Ich hab das mal OOoForum.org gefragt, mal schauen, ob mir da jemand weiterhelfen kann. Mit "Environ()" kann ich jedenfalls die Umgebungsvariablen des Systems abfragen. Da ist aber die Bildschirmauflösung nicht dabei, oder?
Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Formulargröße per Makro festlegen
Das könnte auch OOo StarBasic ... wenn die entsprechenden Schnittstellen programmiert wären.gigabert hat geschrieben:So etwas kann normalerweise jede Programmiersprache
Der Zugriff auf die Werte der Bildschirmauflösung ist jedoch betriebssystemabhängig, also müsste für jede Plattform eine spezifische Routine entwickelt werden.
Du weisst um die Knappheit der Entwickler und Geldmittel beim Projekt ...
Umgebungsvariablen werden variabel gesetzt.gigabert hat geschrieben:... Umgebungsvariablen des Systems abfragen. Da ist aber die Bildschirmauflösung nicht dabei, oder?
Schreibe Dir eine (Windows?-)Routine, die beim Starten des Rechners eine Variable setzt ... und dann kannst Du sie auch abfragen.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Formulargröße per Makro festlegen
Nee, weiss ich nicht, kann ich mir aber so in etwa vorstellen. Na ja, dann warte ich eben, bis dies irgendwann mal implementiert ist...komma4 hat geschrieben:Das könnte auch OOo StarBasic ... wenn die entsprechenden Schnittstellen programmiert wären.gigabert hat geschrieben:So etwas kann normalerweise jede Programmiersprache
Der Zugriff auf die Werte der Bildschirmauflösung ist jedoch betriebssystemabhängig, also müsste für jede Plattform eine spezifische Routine entwickelt werden.
Du weisst um die Knappheit der Entwickler und Geldmittel beim Projekt ...
Hmm, keine Ahnung ob ich das kann. Hört sich aber in meinen Ohren so ähnlich an, wie die Daten in eine INI-Datei reinzuschreiben und dann auszulesen.komma4 hat geschrieben:Schreibe Dir eine (Windows?-)Routine, die beim Starten des Rechners eine Variable setzt ... und dann kannst Du sie auch abfragen.
Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
Re: Formulargröße per Makro festlegen
Hallo eBayer,eBayer hat geschrieben:Hallo Bert,
ich habe lange gesucht, bin aber leider nicht fündig geworden.
Ich habe mein Problem dann so gelöst, daß ich die jweilige Bildschirmauflösung in einer INI-Datei hinterlege. Dann kann ich beliebig damit experimentieren und rechnen.
Gruß eBayer
hab gerade dies aus dem www.oooforum.org erhalten:
Code: Alles auswählen
oDisplayAccess = CreateUnoService("com.sun.star.awt.DisplayAccess")
oDisplay = oDisplayAccess.getByIndex(0)
aRect = oDisplay.WorkArea
msgbox aRect.Width & ", " & aRect.Height
Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
Re: Formulargröße per Makro festlegen
Hallo Bert,
gemeinsam sind wir stark
Danke für Deine Info.... ich werde es heute mal testen.
Gruß eBayer
gemeinsam sind wir stark

Danke für Deine Info.... ich werde es heute mal testen.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: Formulargröße per Makro festlegen
Hallo eBayer,
freut mich, wenn ich dir auch mal weiterhelfen kann. Bei mir hat das eigentlich ganz gut geklappt. Es hat aber bei jedem Wert einen Pixel abgezogen, also eine Auflösung von 1679x1049 Pixel ergeben. Na ja, kann ich gerade so mit leben. Was mich bei der Lösung ein wenig stutzig macht, ich hab mal in der Doku zur API gesucht, aber dort kein com.sun.star.awt.DisplayAccess gefunden. Hab ich an der falsche Stelle gesucht? War ich mal wieder blind? Hat mich jedenfalls etwas gewundert...
Gruss
Bert
freut mich, wenn ich dir auch mal weiterhelfen kann. Bei mir hat das eigentlich ganz gut geklappt. Es hat aber bei jedem Wert einen Pixel abgezogen, also eine Auflösung von 1679x1049 Pixel ergeben. Na ja, kann ich gerade so mit leben. Was mich bei der Lösung ein wenig stutzig macht, ich hab mal in der Doku zur API gesucht, aber dort kein com.sun.star.awt.DisplayAccess gefunden. Hab ich an der falsche Stelle gesucht? War ich mal wieder blind? Hat mich jedenfalls etwas gewundert...
Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3