Formulargröße per Makro festlegen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Formulargröße per Makro festlegen

Beitrag von eBayer »

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
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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formulargröße per Makro festlegen

Beitrag von komma4 »

MIt den Eigenschaften POS und SIZE gab es irgendwie Probleme (2.4.x), ich habe dann .setPosSize genutzt:

Code: Alles auswählen

   With oFormular.getCurrentController().getFrame().getContainerWindow()
   	.setPosSize( .PosSize.x, .PosSize.y , 800, 600 , com.sun.star.awt.PosSize.SIZE )
   End With
Hilft Dir das weiter?
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)
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formulargröße per Makro festlegen

Beitrag von eBayer »

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
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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formulargröße per Makro festlegen

Beitrag von komma4 »

Kap. 10.6 in meiner Ausgabe von Andrews Makrodokument


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
für Dialoge - ich bin mir aber sicher, dass Du das für forms anpassen kannst :-)
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)
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formulargröße per Makro festlegen

Beitrag von eBayer »

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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formulargröße per Makro festlegen

Beitrag von gigabert »

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
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formulargröße per Makro festlegen

Beitrag von eBayer »

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
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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formulargröße per Makro festlegen

Beitrag von gigabert »

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.
Hallo eBayer,

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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formulargröße per Makro festlegen

Beitrag von komma4 »

gigabert hat geschrieben:So etwas kann normalerweise jede Programmiersprache
Das könnte auch OOo StarBasic ... wenn die entsprechenden Schnittstellen programmiert wären.
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 ...

gigabert hat geschrieben:... Umgebungsvariablen des Systems abfragen. Da ist aber die Bildschirmauflösung nicht dabei, oder?
Umgebungsvariablen werden variabel gesetzt.
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)
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formulargröße per Makro festlegen

Beitrag von gigabert »

komma4 hat geschrieben:
gigabert hat geschrieben:So etwas kann normalerweise jede Programmiersprache
Das könnte auch OOo StarBasic ... wenn die entsprechenden Schnittstellen programmiert wären.
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 ...
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:Schreibe Dir eine (Windows?-)Routine, die beim Starten des Rechners eine Variable setzt ... und dann kannst Du sie auch abfragen.
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.

Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formulargröße per Makro festlegen

Beitrag von gigabert »

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
Hallo 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 
Das ergibt die aktuelle Bildschirmauflösung. Vielleicht kannst du damit ja was anfangen...

Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formulargröße per Makro festlegen

Beitrag von eBayer »

Hallo Bert,
gemeinsam sind wir stark :D
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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formulargröße per Makro festlegen

Beitrag von gigabert »

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
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
Antworten