Hallo!
Falls dein Problem noch aktuell ist (wenn nicht, hilfts vl jemanden, der ein ähnliches Problem hat):
Ich bin bei weitem kein Basic Profi, aber ich hatte einen ähnlichen Gedanken und hab mir deshalb folgende Makros zusammengebastelt:
ad a)
Makro an "Dokument schließen" gebunden in jedem Formular
Code: Alles auswählen
Sub dbShutdown
If not(shutdown) then
'Variable zur Steuerung der Fensterschließung (falls false: Endlosschleife
'(shutdown schließt Formular, Formularschließen löst dbShutdown aus etc)
shutdown = true
'Controler referenzieren
oController = ThisDatabaseDocument.CurrentController
oConnection = oController.ActiveConnection
'Verbindung und SubComponenten schließen, Dokument speichern und DB anschließend schließen
oDoc = ThisDatabaseDocument
oDoc.store()
oController.closeSubComponents
oController.ActiveConnection.close()
oDoc.close(True)
endif
End sub
wichtig ist hierbei die Variable
wenn die nicht in der Sub auf true gesetzt wird, produzierst du eine Endlosschleife (Fensterschließen löst Sub dbShutdown aus, Sub dbShutdown schließt alle Fenster, Fenster löst wieder Sub dbShutdown aus etc)
Fallst du irgendeine Art der Menüführung durch die verschiedenen Formulare hast, musst da das dann auch abfangen, da hier ja auch die Formulare geschlossen werden
ad b)
Makro ist an "Dokument öffnen" gebunden
Code: Alles auswählen
Sub dbStart
'Start der Datenbank: Datenquelle verbinden, IDE unsichtbar machen, Bibliotheken laden
shutdown = false 'wichtige Variable für Fenster schließen (siehe Makro oben)
'IDE-Fenster referenzieren und verstecken
oFrame = ThisComponent.CurrentController.Frame
oMenuWin = oFrame.ContainerWindow()
oMenuWin.setVisible(false)
'Bibliotheken laden
GlobalScope.BasicLibraries.LoadLibrary("Tools")
GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
BasicLibraries.LoadLibrary("Menue")
'Controller verbinden
oController= ThisDatabaseDocument.CurrentController
If NOT ( oController.isConnected() ) Then oController.connect()
'Willkommensgruß
MsgBox "Willkommen!", 64
'Hauptmenü öffnen, Layoutmenü verstecken
oFormDoc = ThisDatabaseDocument.formdocuments.getbyname("Menue_Main").open
lmgr = oFormDoc.getCurrentController().Frame.LayoutManager
lmgr.setVisible(false)
'lmgr.hideElement("private:resource/menubar/menubar") 'Menü
'lmgr.hideElement("private:resource/statusbar/statusbar")
lmgr.hideElement("private:resource/toolbar/formsnavigationbar")
lmgr.hideElement("private:resource/toolbar/standardbar")
lmgr.hideElement("private:resource/toolbar/formdesign")
lmgr.hideElement("private:resource/toolbar/formcontrols")
End Sub
Durch die Zeile "
wird die IDE unsichtbar und nicht mehr über die Taskleiste aufrufbar
Die Zeilen
und
sorgen dafür, dass der User nicht irgendwas im Base Menü herumpfuschen kann
Einziges Problem bei der ganzen Sache ist, dass die IDE sichtbar wird, wenn das .odb Dokument nochmals geöffnet wird, wenn die Datenbank bereits läuft
Ich hoffe, ich konnte dir helfen
Grüße aus Wien
Rasakul