🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Formular Fenster Größe festlegen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Benutzeravatar
HeiDieLX2
! Supporter - Spende !
Beiträge: 41
Registriert: Mo 9. Sep 2019, 12:50

Re: Formular Fenster Größe festlegen

Beitrag von HeiDieLX2 » Mi 28. Aug 2024, 15:07

Freischreiber hat geschrieben:
Di 27. Aug 2024, 16:51
Diese Fähigkeit ging irgendwann verloren und seitdem müßte man sich mit einem Makro behelfen. Was ich bis heute nicht versucht habe, sondern ich ärgere mich jedesmal und ziehe das Fenster manuell zurecht.
Also mir geht es es genau so wie dir. Jedoch ist es nicht so, dass wenn ich hier
RobertG hat geschrieben:
Sa 17. Aug 2024, 08:08
Extras → Anpassen → Ereignisse → Dokument öffnen
steht auch im Handbuch als das Ereignis, das genutzt werden sollte.
unter Extras-Anpassen Veränderungen vornehme, dass sich diese auf meine Benutzereinstellungen auswirken. Somit also nur auf dem Rechner auf dem ich die Ereignisse verknüpft habe. D. h. wenn ich die betreffende odb Datei auf einen anderen Rechner kopiere sind dann die Fenstereinstellungen weg?
Oder bin ich nun gänzlich auf dem falschen Dampfer?
MfG
HeiDieLx vom Bienwald

Tumbleweed
postgreSQL 16
LibreOffice 24.2.5.2

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formular Fenster Größe festlegen

Beitrag von RobertG » Mi 28. Aug 2024, 15:13

Die Einstellungen in dem Makro bleiben.
Ich lasse allerdings den Zoom-Faktor Anhand der Pixel für das größte Formular, das ich habe, berechnen. Und da kann es dann manchmal ein bisschen Probleme geben, wenn ich zu viel herauskitzeln will und der andere User dann mit großen Symbolen im Navigationsbereich arbeiten will.

Die XRechnung von mir arbeitet genau mit diesem Makro - auf allen Systemen.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

herz4
Beiträge: 66
Registriert: Sa 17. Dez 2016, 16:11

Re: Formular Fenster Größe festlegen

Beitrag von herz4 » Sa 15. Feb 2025, 09:22

Hallo Freischreiber,
sondern ich ärgere mich jedesmal und ziehe das Fenster manuell zurecht.
Diesen Ärger schaffte ich mir durch ein einziges Makro vom Hals, mit dem ich Datenbankformulare so automatisch öffnen lasse, wie ich es wünsche.

Die position, zoom, menu u.a. Daten stehen in einer einzigen Tabelle der Datenbank mit den Formularnamen als Zugriffschlüssel/ID. Jedes Formular öffnet mit dem gleichen Startmakro, welches nun seine Daten aus der Tabelle ausliest und das Formular genaus so und an der Stelle öffnet, wie ich es eingestellt habe.

Ich habe sogar einen Standardeintrag so festgelegt, dass jedes, (etwa noch) nicht explizit eingerichtetes Formular zunächst etwa mittig und voll sichtbar dargestellt wird. Dieses Vorgehen ist besonders für große Bildschirme und entsprechende Formulare m. M. n. ratsam. Meine Formulare werden alle im Normal- und eben nicht Web-Modus dargestellt.

Code: Alles auswählen

Sub SETFORM 

'Makro beim Starten eines Formulars um sein Layout zu definieren,
'die Datenbank muss angemeldet sein, ihr Name muss der 
'Name des .odb-Containers in Großbuchstaben sein!
'Das Makro sollte im Hauptformular unter "Beim Laden" eingetragen sein

ON ERROR GOTO Abbruch 'bei Fehler wird dieser angezeigt und Programm abgebrochen!

Dim WINIST As New com.sun.star.awt.Rectangle

'der aktuelle Frame ist das zu öffnende Formularfenster
oFrame=thisComponent.CurrentController.Frame
'akt. Fenstertitel des Frames, etwa "db1.odb : Form1 - LibreOffice Base ..."
sTITLE = oFrame.Title
'Auslesen des Dateinamens, etwa "db1"
sName0 = Split(sTITLE,".")
'Zuweisen des - angemeldeten - DB-Namens, Großbuchstaben!
sDB = UCase(sName0(0))
sName1 = Split(sTITLE,":")
sName0 = Split(Trim(sName1(1)),"-")
'Name des Formulars wie unter "Formulare"
sFormName = Trim(sName0(0))
'in der Tabelle T_FORMANZ sollten Größe u. Pos. eingetragen sein, sonst wie dortiger "STANDARD"-Datensatz!
sSQL = "SELECT * FROM T_FORMANZ WHERE FORMNAME='" & sFormName & "'"
Abfrageergebnis = SQLSTATEM(sDB).executeQuery(sSQL)
If Not Abfrageergebnis.next THEN
sSQL = "SELECT * FROM T_FORMANZ WHERE FORMNAME='STANDARD'"
Abfrageergebnis = SQLSTATEM(sDB).executeQuery(sSQL)
Abfrageergebnis.next
EndIf
lX=Abfrageergebnis.getLong(2)
lY=Abfrageergebnis.getLong(3)
lBREITE=Abfrageergebnis.getLong(4)
lHOEHE=Abfrageergebnis.getLong(5)
'Bildschirm mit 3840*2160 Pixel
If lX=0 THEN lX = (3840-lBREITE)/2
If lY=0 THEN lY = (2160-lHOEHE)/2

n=0

bSETZTITEL=Abfrageergebnis.getBoolean(6)
bOHNEMENUE=Abfrageergebnis.getBoolean(7)
bNAVILEISTE=Abfrageergebnis.getBoolean(8)
SPR1:
n=n+1
oFrame.ContainerWindow.SetPosSize(lX,lY,lBREITE,lHOEHE,15)
wait n*100
WINIST = oFrame.ContainerWindow.getPosSize()
IF NOT (WINIST.X=lX AND WINIST.Y=lY AND WINIST.WIDTH=lBREITE AND WINIST.HEIGHT=lHOEHE) AND n<7 THEN GoTo SPR1
'MsgBox n 
oFrame.Controller.ViewSettings.ZoomValue = 100
IF bSETZTITEL THEN
oFrame.SetTitle(sFormName)
EndIf
IF bOHNEMENUE THEN
lmgr = oFrame.LayoutManager
LayoutElements = lmgr.getElements
   	for i = 0 to UBound(LayoutElements, 1)
      lmgr.hideElement(LayoutElements(i).ResourceURL)
  	next i
EndIf
'aElemente(0) = "private:resource/menubar/menubar"
'aElemente(1) = "private:resource/statusbar/statusbar"
'aElemente(2) = "private:resource/toolbar/formsnavigationbar"
'aElemente(3) = "private:resource/toolbar/standardbar"
'aElemente(4) = "private:resource/toolbar/formdesign"
'aElemente(5) = "private:resource/toolbar/formcontrols"
IF bNAVILEISTE THEN
	BAR = "private:resource/toolbar/formsnavigationbar"
	IF NOT(lmgr.requestElement(BAR)) THEN
		lmgr.createElement(BAR)
	END IF
	lmgr.showElement(BAR)
EndIf

Exit Sub
Abbruch:
MsgBox "Fehler " & ERR & ": " & ERROR$ + CHR(13) + "In Zeile : " + ERL + CHR(13) + NOW , 16 ,"Fehler aufgetreten"
Ende:
End Sub
Das Leben ist zu kurz, um sich - unnötig - zu ärgern.

Mit herz4lichen Grüßen
:? 2025-02-09 Linux Mint 20.1 64bit Ulyssa base: Ubuntu 20.04 focal, Cinnamon 4.8.6, Linux-Kernel 6.8, LO Version: 6.4.7.2 Build-ID: 1:6.4.7-0ubuntu0.20.04.9, HSQL Database Engine 2.5.0 Server/extern mit org.hsqldb.jdbcDriver


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten