Seite 1 von 2

Größe eines db-Formulars

Verfasst: Do 5. Nov 2015, 11:32
von Pit Zyclade
Hallo,
Sowohl beim Entwurfmodus als auch bei der Ansicht des gefüllten Formulars fällt mir auf, dass ich zwar die Seite (A4 bei mir) formatieren kann, aber das eigentliche Formular auf dem Bildschirm viel kleiner ist als gewünscht. Die Fläche daneben innerhalb des Programmrahmens habe ich z.B. Ocker gefärbt.
Wünschenswert wäre doch die Fläche formatfüllend auszunutzen. Ich habe auch mit verschiedenen Ansichtsmaßstäben gearbeitet, jedoch "optimal" ist z.B. ausgegraut.
Wie also kann ich mein Ziel einer formatfüllenden Ansicht erreichen, ohne jeden %-Schritt zu probieren?

Danke für Diskussion

gelöst: Größe eines db-Formulars

Verfasst: Do 5. Nov 2015, 13:34
von Pit Zyclade
Habs selber gefunden ...
Im Entwurfmodus (!) unten das 10. Symbol von links (Rechteck mit 4 Pfeilen) anklicken und dann die Größe gewünscht ändern. Fertig.
Gruß

Re: Größe eines db-Formulars

Verfasst: Do 5. Nov 2015, 17:47
von RobertG
Hallo Pit,

die Zoomeinstellung des Formulars entspricht der Zoomeinstellung der zuletzt von Dir geöffneten Writer-Datei. Das kannst Du nur dauerhaft über Makros korrigieren.

Code: Alles auswählen

SUB Formularzoom
	ThisComponent.CurrentController.ViewSettings.ZoomValue=100
END SUB
Der Code soll bei dem Öffnen des Formulars ausgelöst werden. Formular also zum Bearbeiten öffnen, Extras → Anpassen → Ereignisse → Dokument öffnen ... und dort dann das Makro einbinden.

Ansonsten: Strg und Scrollrad der Maus regeln die Größe wieder ein.

Gruß

Robert

Re: Größe eines db-Formulars

Verfasst: Fr 21. Feb 2020, 16:52
von devdol
Hallo miteinander,

das

Code: Alles auswählen

ThisComponent.CurrentController.ViewSettings.ZoomValue=anIntegerValue
hat ja etliche Jahre funktioniert, neuerdings aber leider nicht mehr [LO Version: 6.3.4.2, Build-ID: 1:6.3.4-0ubuntu0.18.04.1~lo2].

Die Fehlermeldung lautet schlicht "Eigenschaft oder Methode nicht gefunden: ViewSettings."

Weil das Zufalls-Gezoome der Base-Formulare aber wirklich nervig sein kann: hat jemand schon wieder eine aktuelle Lösung für eine makrogesteuerte Größenanpassung gefunden :?: ?

Re: Größe eines db-Formulars

Verfasst: Fr 21. Feb 2020, 17:42
von RobertG
Hallo devdol,

das funktioniert hier bei mir weiterhin einwandfrei: LO 6.4.0.3 unter OpenSUSE 15.1, Originalpakete von LO.

Vielleicht ist da etwas daneben gegangen bei der Ubuntu-Paketierung. Versuche es doch einmal mit den Originalpaketen, nicht mit denen Deiner Distribution.

Gruß

Robert

Re: Größe eines db-Formulars

Verfasst: Mo 24. Feb 2020, 12:08
von devdol
Leider kein Erfolg. Ich habe heute sämtliche LIbreOffice-Pakete der Ubuntu-Paktverwaltung deinstalliert und die aktuellen bei libreoffice.org verfügbaren Pakete installiert - soweit kein Problem ("Version: 6.4.0.3
Build-ID: b0a288ab3d2d4774cb44b62f04d5d28733ac6df8, CPU-Threads: 8; BS: Linux 4.15; UI-Render: GL; VCL: kf5;
Gebietsschema: de-DE (de_DE.UTF-8); UI-Sprache: de-DE, Calc: threaded).

Allerdings: die Property ZoomValue ist nach wie vor nicht vorhanden.
Das Makro sieht aktuell aus wie folgt und ist via Extras/Anpassen/Ereignisse für die odb-Datei mit "Dokument öffnen" verknüpft, damit ein bestimmtes Formular automatisch geladen wird - was auch funktioniert.
Allerdings wäre dieses noch auf eine definierten Zoomstufe zu setzen, um vernünftig damit arbeiten zu können.

Code: Alles auswählen

Sub AutoLoadForm()
  Dim oController, oFrame
    oController = ThisDatabaseDocument.CurrentController
	If not ( oController.isConnected() ) Then oController.connect() ' Connect to the database, if necessary
	DoEvents
  
	oController.loadComponent( com.sun.star.sdb.application.DatabaseObject.FORM, _
	                           "MeinFormular", FALSE ) 
	                           ' Parameters: ObjectType, Parameter ObjectName, ForEditing

    XRayLaden()
    XRay ThisComponent.CurrentController

    oController.ViewSettings.ZoomType = com.sun.star.view.DocumentZoomType.BY_VALUE
    oController.ViewSettings.ZoomValue = 85

End Sub
Es würde mich nicht so frustrieren, hätte genau dies nicht in der Vergangenheit über viele Jahre funktioniert...

Hat jemand noch Ideen? Oder alternative Wege, die Zoomstufe per Makro zuzuweisen?

Re: Größe eines db-Formulars

Verfasst: Mo 24. Feb 2020, 12:39
von RobertG
Hallo devdol,

Dein Makro versucht, dem Controller des Datenbankdokuments eine Zoomstufe eines Writerdokumentes (nichts anderes ist ein Formular) zuzuweisen.

Ich habe das nicht im Einzelnen geprüft, was dabei passieren sollte, aber

Code: Alles auswählen

SUB Formularzoom
	ThisComponent.CurrentController.ViewSettings.ZoomValue=100
END SUB
das obige Makro funktioniert hier einwandfrei.

Schmeiß einmal den ganzen unnützen Kram aus Deinem Makro raus. Dann können wir weiter forschen, wenn das Ganze eben nicht läuft.

Re: Größe eines db-Formulars

Verfasst: Mo 24. Feb 2020, 13:20
von devdol
Hallo RobertG,

"unnütz" wären da allein die beiden Xray-Anweisungen, die vorher natürlich auch nicht drin standen.
Die oController.loadComponent-Anweisung soll das Formular ja automatisch laden, was sie nur tut, wenn zuvor oController.connect() ausgeführt wird, sonst schlägt das fehl.

Diskutieren könnte man allenfalls über das DoEvents ... war nur so eine Hoffnung ,-)

Mittlerweile habe ich herausgefunden, daß

Code: Alles auswählen

    oController.ViewSettings.ZoomType = com.sun.star.view.DocumentZoomType.BY_VALUE
    oController.ViewSettings.ZoomValue = 85
funktioniert, wenn ich es dem "Aktion ausführen"-Ereignis einer Befehlsschaltfläche auf dem Formular zuweise!

Damit ist bewiesen, daß Du recht hast - aber die Frage noch zu klären, wo man das unterbringen kann, damit das bei jedem Öffnen des Formulars auch automatisch passiert.
Eine Zuweisung von "Ansicht wurde erzeugt" habe ich ebenfalls versucht, in der Annahme, daß dieses Event etwas später ausgelöst wird, mit einem separaten Minimal-Makro:

Code: Alles auswählen

Sub Zoom
       ThisComponent.CurrentController.ViewSettings.ZoomValue=100
End Sub
Aber auch davon erhalte ich nur:
"BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: ViewSettings."
Nächster Versuch "Dokument aktivieren", aber auch das ist augenscheinlich kein geeignetes Ereignis - gleicher Fehler. Letzter Versuch, Zuweisung zum Ereignis "Laden des Dokuments beendet": Funktioniert ebenfalls nicht.

Leider ist die genaue Abfolge der Events entweder gut versteckt oder tatsächlich nicht dokumentiert, aber nach meinem Verständnis bin ich durch alles halbwegs in Frage kommende durch...

Re: Größe eines db-Formulars

Verfasst: Mo 24. Feb 2020, 15:14
von RobertG
Ich habe das hier testweise bei
Extras > Anpassen > Ereignisse > Dokument öffnen
liegen. Das klappt. Habe ich auch so im Handbuch hinterlegt:
Wählen Sie das passende Ereignis aus. Bestimmte Makros lassen sich nur starten, wenn Ansicht wurde erzeugt gewählt ist. Andere Makros wie z.B. das Erzeugen eines Vollbild-Formulars kann über Dokument öffnen gestartet werden.
Ich ermittle so etwas auch nur über Tests.

Re: Größe eines db-Formulars

Verfasst: Mo 24. Feb 2020, 16:39
von devdol
Hallo RobertG,

zuallererst erst mal herzlichen Dank für Deine Hilfsbereitschaft!

Ja, genau den zitierten Satz in jenem Handbuch (eine der besten Quellen übrigens, die ich bisher gefunden habe!) habe ich gelesen.

Ich habe jetzt mal ein Minimalbeispiel erstellt - ohne Datenbanktabellen, nur ein Formular mit einem Label, das automatisch über das Ereignis "Dokument öffnen" mit dem Makro unten geladen wird. Dabei bekomme ich von der Zoom-Zeile wieder nur besagtes "Eigenschaft oder Methode nicht gefunden: ViewSettings."
Daher bin ich gespannt, ob es bei Dir funktioniert.
Meine Umgebung ist ein aktuelles KDE Neon (Ubuntu 18.04-LTS basiert) mit den bereits erwähnten aktuellen deb-Paketen von libreoffice.org.

Code: Alles auswählen

Sub AutoLoad
	Dim oController
	oController = ThisDatabaseDocument.CurrentController
	If not ( oController.isConnected() ) Then oController.connect() 
	oController.loadComponent( com.sun.star.sdb.application.DatabaseObject.FORM, _
	                           "Formular1", FALSE ) 
	                           ' Parameter: ObjectType, Parameter ObjectName, ForEditing
	ThisComponent.CurrentController.ViewSettings.ZoomValue=100
End Sub