Relative Höhe von (Formular-)Texttabellen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Relative Höhe von (Formular-)Texttabellen

Beitrag von ejomi »

Einen schönen Tag alle Miteinander!

Dies ist eigentlich ein Thema für Writer bzw. HTML aber eben auch bei Formularen unter BASE von Interesse.

Formularsteuerelemente wie Eingabefelder, Schaltflächen usw. lassen sich entweder an der Seite, am Absatz oder als Zeichen verankern. Alle diese Methoden bewirken eine statische Positionierung auf dem Formular.

Möchte man aber eine dynamische Positionierung abhängig von der aktuell eingestellten Fenstergröße, kann man eine (unsichtbare) Texttabelle zu Hilfe nehmen. Dazu muss zunächst eine (unsichtbare) Texttabelle mit der Ausrichtung "automatisch" erstellt werden. Dann können die betreffenden Steuerelemente jeweils am Absatz der gewünschten Tabellenzelle verankert werden. Durch die Festlegung von festen Zeilenhöhen (linke Maustaste auf die Tabellenzelle klicken und Zeilenhöhe einstellen) kann zum Schluss noch die vertikale Ausrichtung realisiert werden.

Dieser Trick zur dynamischen Positionierung von Elementen auf dem Bildschirm wurde schon zu Zeiten von HTML 3.2 angewendet, als die Positionierung mit Stylesheets vielen Browsern noch Probleme bereitete. Weil BASE-Formulare immer in der HTML-Ansicht dargestellt werden, kann dieser Trick aber auch hier (fast) problemlos zum Einsatz kommen

Die Writer-Tabellenausrichtung "automatisch" bewirkt eine kontinuierliche Dehnung/Stauchung der Tabelle in horizontaler Richtung abhängig von der aktuellen Fensterbreite und entspricht damit der prozentualen Breitenangabe "100%" wie von HTML bekannt. Bei OO lassen sich dazu auch noch die Tabellenabstände zum Seitenrand "oben" bzw. "links" explizit einstellen. Aber auch dann kann mit dem Options-Häkchen "relativ" die Tabellenbreite prozentual eingestellt werden - genau so, wie man es von HTML kennt.

Das Problem:

Bisher habe ich nur von der horizontalen Ausrichtung gesprochen weil unter OO eine vertikal-relative Ausrichtung nicht möglich ist. Auch die Höhe der Tabellenzeilen läßt sich nur absolut in cm einstellen. Die Festlegung des Tabellenabstands zum unteren Rand mit "0 cm" hat überhaupt keine Wirkung! Damit ist eine dynamische Positionierung nach unten bzw. eine vertikale Dehnung/Stauchung der Tabelle leider nicht möglich und wir verlassen die schöne HTML-Konformität!

Gibt es hierzu vielleicht ein bekanntes "workarround"?

Sollte ich diesen Thread doch besser in die Rubrik HTML stellen?

Grüße aus dem fernen Dresden:
ejomi
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Relative Höhe von (Formular-)Texttabellen

Beitrag von RobertG »

Da Du Dich explizit auf Formulare in Base beziehst ist dies sicher ein Base-Problem. Vermutlich ist es aber mehr ein Feature-Wunsch als die Frage, wie so etwas mit momentanen Bordmitteln machbar sein soll.

Ich könnte mit einer Tabelle an dieser Stelle nichts anfangen, da die Tabellenkontrollfelder eben keine relativen Größen aufweisen. Was würde also auf kleineren Monitoren passieren? Genau das, was mit LO 3.4 am Anfang passiert ist: Die Web-Ansicht war plötzlich nicht mehr der Standard, ein Rand wurde um die Formulare gezogen, die Seite war kleiner, die Formularkontrollfelder wurden teilweise übereinander geschoben.

Um Formulare in Relation zum Monitor anzupassen eignet sich die Zoom-Einstellung wesentlich besser: Mit Strg und Mausradbewegung habe ich auf einmal die Größe von Schrift und Kontrollfeldern beeinflusst. Das entspricht dann einer tatsächlichen relativen Größe.

Gruß

Robert
ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Re: Relative Höhe von (Formular-)Texttabellen

Beitrag von ejomi »

Hallo Robert,

erst mal Danke für die schnelle Antwort.
RobertG hat geschrieben:Um Formulare in Relation zum Monitor anzupassen eignet sich die Zoom-Einstellung wesentlich besser
... das ist richtig - aber ich möchte eben die Proportionen an der Fenstergröße des Formulars (nicht Monitorgröße) anpassen!

Grund:
Ich habe ein kleines Datenbank-Hilfsprogramm, dessen Formular ich auf dem Wide-Screen möglichst klein und unaufdringlich in irgendeiner Ecke des Bildschirms platzieren möchte. Um dieses Fenster so klein wie irgend möglich zu halten werden Menü-, Symbol- und Statusleiste sowie alle Scrollbalken von einem Start-Makro ausgeblendet. Dem Benutzer steht also kein Zoomwerkzeug zur Verfügung. Stattdessen ermittelt bereits das Makro die Monitor-Auflösung selbststätig und stellt die passenden Grundgrößen der Fensternhalte per Zoom ein, positioniert das Fenster an den Bildschirmrand und stellt auch auflösungsabhängig die Fenster-Abmessung (Höhe/Breite) ein.

So weit, so gut. Nun zerrt der Benutzer beim Verschieben des Fensters möglicherweise an dessen Rändern und da kann es eben zu unschönen Effekten kommen: z.B. können Eingabefelder hinter den Fensterrand verschwinden. Diese lassen sich nicht heraus-scrollen, weil ja eben der Scrollbalken fehlt - wohlmöglich merkt der Benutzer überhaupt nicht, dass hier Steuerelemente fehlen (weil verdeckt).

Da fiel mir der alte HTML-Trick mit der Tabelle ein um die Eingabefelder innerhalb des Fensters relativ zu positionieren. Wie gesagt: Horizontal kein Problem aber eben vertikal ...

Ich hoffe mich verständlich ausgedrückt zu haben.

Gruß: ejomi
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Relative Höhe von (Formular-)Texttabellen

Beitrag von RobertG »

Wenn Du die Kontrollelemente relativ positionierst: Wie willst Du sicherstellen, dass die Elemente nicht überlappen? Die Elemente haben ja keine relative Größe.

Wie hast Du die Menüleiste konstant wegbekommen? Ich habe darauf verzichtet, weil sie mit einem Klick auf das Formular bzw. nach dem Abspeichern eines Datensatzes plötzlich wieder da war. Alle Symbolleisten gingen problemlos.

Wenn das Ganze aber doch sowieso nur ein kleines Fenster ist: Wieso benutzt Du keinen Dialog? Da kannst Du genau so viel Platz nutzen, wie Du benötigst. Der Dialog lässt sich nicht durch Mausschubsen verkleinern.

Gruß

Robert
ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Re: Relative Höhe von (Formular-)Texttabellen

Beitrag von ejomi »

RobertG hat geschrieben:Wie hast Du die Menüleiste konstant wegbekommen?
... so:

Code: Alles auswählen

Sub SwitchMenubar(bOnOff)
	Dim oFrmFrame As Object, oLayout As Object, TBar As String
	oFrmFrame = ThisComponent.CurrentController.Frame
	oLayout = oFrmFrame.LayoutManager
	TBar="private:resource/menubar/menubar"
	If bOnOff = True Then
		'If oLayout.IsElementVisible(TBar) = false Then oLayout.showElement(TBar)
		oLayout.showElement(TBar)
	Else
		'If oLayout.IsElementVisible(TBar) Then oLayout.hideElement(TBar)
		oLayout.hideElement(TBar)
	EndIf
End Sub
Die Funktion arbeitet ab OO Vers. 3.2.1 einwandfrei. Als Remark habe ich auch die Möglichkeit einer Toggle-Funktion hingeschrieben (damit kann dann der Übergabeparameter wegfallen).
RobertG hat geschrieben:Wieso benutzt Du keinen Dialog?
... stimmt! Wieso eigentlich nicht? ... manchmal ist man in ein Problem verbohrt und vergisst das Naheliegenste!
Danke für den Hinweis.

(Dennoch: Rein theoretisch könnte man die dynamische Texttabelle zum Problem erheben - was wir aber hier wohl nicht mehr machen sollten weil unsinnig.)

Gruß: ejomi
Antworten