Base: Schriftgröße in Formularen und Feldern

Hallo Robert,

es ist jetzt vier Jahre her, dass ich dich zum ersten Mal um Rat gebeten
habe für mein Projekt GenoBase - "Mitgliederverwaltung für
Genossenschaften"! - und ich war immer froh, dass ich im Zweifel in
deinem BASE-Handbuch nachschauen konnte wenn mir mal wieder irgendetwas
sehr rätselhaft vorkam.

... und alle MitleserInnen,

Ich bin inzwischen sehr gut vorangekommen, habe praktisch alles
eingebaut, was man im Mitgliederbereich der Genossenschaftsarbeit
braucht, und es gibt schon einige Genossenschaften, die GenoBase nutzen.
(genaueres auf genobase.friege.de)

Nun habe ich probiert, GenoBase auf einem Raspberry pi mit Symbian
laufen zu lassen und dabei gemerkt, dass in den Formularen die
Schriftgröße oft nicht mehr in die Felder passt.

Die Fenstergröße (in Pixel) kann ich anpassen und in der Datenbank
speichern lassen, sodass sie (nach einem Formularwechsel) wieder wie
vorher ist, auch bei anderen Bildschirmen, aber die Schriftgrößen machen
das ja nicht mit.

Es handelt sich inzwischen um 30 Formulare (alle mit gleicher Größe
26cm*19cm bzw. ) , und ich frage mich und euch, ob es vielleicht eine
elegante Möglichkeit gibt, mit verschieden großen Bildschirmen unter
verschiedenen OS die Schriftgrößen in Base-Formularen global anpassen zu
lassen.

Dankbar für jede Anregung
ist Gisbert

Hallo Gisbert,

man kann die FontHeight setzen, Beispiel, wo ich das an einem Testdialog, den ich gerade hatte, ausprobiert habe:
dlgLib = DialogLibraries.GetByName("eigene")
dlg = createUnoDialog(dlgLib.getByName("Dialog1"))
dlg.model.getByName("TextField1").FontHeight=13
Ist es das, was du suchst?
Etwas verwirrend ist, dass in Xray 0 angezeigt wird, wenn beim Dialog-Design noch "Standard" ausgewählt ist, aber wenn man dort eine Größe gewählt hat, wird sie auch in Xray gezeigt.
Es st natürlich eine Menge Code, die du dann brauchst, um alle deine Felder zu behandeln, aber anders geht es meiner Meinung nach nicht.

Gruß
Gerhard

Hallo Gisbert,

das Dumme an den Formularfeldern ist, dass ich nirgendwo in den
Einstellungen, auch den erweiterten Einstellzungen von LO, erkennen
kann, wie dort der Standard definiert wird. Ansonsten wäre es ja
möglich, den Standard zentral von der Fontgröße her umzustellen. Ich
hätte das auch gerne schon für *.pdf-Formulare bei der Schrift gemacht,
da die Schrift der Formularfelder nicht beim Export nach *.pdf mit
eingebettet wird. Ich habe bisher nur die Lösung gefunden, alle Felder
zu markieren und für alle eine andere Schrift zu wählen.

Natürlich muss so etwas auch über Makro möglich sein. Dann müsste aber
das Formular zum Bearbeiten per Makro geöffnet werden und eben FontSize
eingestellt werden. Danach abgespeichert und wieder zur Eingabe von
Daten geöffnet.

Zuverlässiger wäre es da vielleicht, den Zoom-Faktor zu beeinflussen,
d.h. die Darstellungsgröße des gesamten Formulars. Denn das beeinflusst
natürlich auch die Schriftgröße in den Feldern.

Gruß

Robert

Nachtrag: Das Makro für den Zoomfaktor lässt sich einfach über den
Makrorecorder aufzeichnen:

sub Zoom
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:ZoomSlider", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(3) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ZoomSlider.CurrentZoom"
args2(0).Value = 80
args2(1).Name = "ZoomSlider.SnappingPoints"
args2(1).Value = Array()
args2(2).Name = "ZoomSlider.SvxMinZoom"
args2(2).Value = 20
args2(3).Name = "ZoomSlider.SvxMaxZoom"
args2(3).Value = 600

dispatcher.executeDispatch(document, ".uno:ZoomSlider", "", 0, args2())

end sub

Das erstellt einen Zoom von 80% für das Fenster.

Gruß

Robert