Seite 1 von 1

[gelöst] Formulare schließen mit beim Schließen von dateien

Verfasst: Mo 23. Mär 2015, 16:55
von Ryoho
Ich habe ein komisches verhalten festgestellt ich häng die Datenbank mal unten an... die Datenbank startet so das sie in den Hintergrund gebracht wird und das das Hauptformular im Vollbild startet. um die Datenbank herzuholen müsst ihr einfach nach dem start ESC drücken und erneut mit doppelklick auf die Datenbank.

Sobald ich die Datenbank mit ESC aus dem vollbildmodus hole und minimier daneben als Beispiel eine Writer oder Calc Tabelle öffne und im anschluss diese schließe dann schließt sich ebenfalls das hauptformular, momentan zumindest kann ich es mir weder erklären, noch finde ich es als eine "Normalität" wenn es aber doch der Fall ist lasse ich mich gerne belehren.

Ich danke im voraus.
Projektnummern.zip
(89.12 KiB) 164-mal heruntergeladen

Re: Formulare schließen sich mit beim Schließen von dateien

Verfasst: Do 26. Mär 2015, 16:38
von gogo
Hallo,

das Problem liegt im Verstecken der Datenbank-GUI. Diese ist das Parent-Window für alle aus ihr heraus geöffneten Fenster, also auch für Calc-Dateien die Du aus einem base-Formular heraus öffnest. Solange sie eingeblendet ist gilt sie (getestet für verschiedene Linux-Desktops, WinXP, Win7) als "offen". Sobald man sie ausblendet gilt sie als "geschlossen", somit wird ein QUIT-Signal eines untergeordneten Fensters immer als QUIT-Datenbank interpretiert. Ein Fenster-Spezifisches-Close-Signal schließt nur das Fenster, sollte dann aber das LO-Rahmenfenster geöffnet lassen. Manche Fenster bieten diesen Befehl gar nicht an - zu erkennen wäre er im Menü "Datei/Schließen" gegebüber "Datei/LibreOffice beenden" bzw. am Schließen-Symbol (X am Fensterrahmen, bzw. noch ein X direkt drunter).

Statt

Code: Alles auswählen

sub open_start_formular
oWin = starDesktop.getCurrentFrame.getContainerWindow()
oWin.visible = false
oController= ThisDatabaseDocument.CurrentController
If NOT ( oController.isConnected() ) Then oController.connect()
ThisDatabaseDocument.formdocuments.getbyname("Angebotslaufzettel").open
End sub
solltest Du eher die GUI disablen:

Code: Alles auswählen

dim oAppWin, oGr
oAppWin=ThisComponent.CurrentController.ApplicationMainWindow
oAppWin.setPosSize(10, 10, 100, 10, 12)
' setPosSize ( X as long, Y as long, Width as long, Height as long, Flags as integer ) com.sun.star.awt.XWindow 
'oAppWin.lock
oAppWin.setenable(false)
.setPosSize verkleinert das Fenster, .setenable(false) stellt sicher, dass es den Fokus nicht bekommen kann.
Mit oAppWin.lock hab' ich mal experimentiert, war aber nicht das was ich suchte.
Du brauchst unbedingt etwas, das oAppWin.setenable(true) machen kann - sonst hast Du keinen Zugriff mehr auf die Datenbank!

Re: Formulare schließen sich mit beim Schließen von dateien

Verfasst: Fr 27. Mär 2015, 09:01
von Ryoho
Wow, danke!
Nun hab ich allerdings eine Frage entweder ich habs nicht richtig verstanden oder ich habs nicht richtig gelesen.
Welcher Befehl ist dafür zuständig das die Datenbank nicht benutzt werden kann?

OK nicht richtig gelesen.
oAppWin.setenable(true)

Ist dafür zuständig. Ich danke dir.