Hallo!
Das GUI auszublenden ist kein Problem: (Wesentlicher Code und Beispieldatei:
viewtopic.php?f=8&t=24675&hilit=extern+starter, bzw. "Makros in OpenOffice.org 3 – Basic/StarBasic" von Thomas Krumbein)
Code: Alles auswählen
sub GUI_ausblenden
oWin = starDesktop.getCurrentFrame.getContainerWindow()
oWin.visible = false
end sub
Das Makro wenn das GUI geöffnet ist unter Extras/Anpassen/Ereignisse dem Ereignis "Dokument öffnen" zuweisen, unten unter "Speichern in:" die aktuelle Datenbank einstellen, Speichern, DB neu starten und Du wirst die GUI nicht mehr finden... Es empfiehlt sich in dieser sub auch das Öffnen des Switchboards einzubauen
Erfolg? - ja - ABER: Jetzt beginnen die Probleme!
visible = false kann vom User wieder rückgängig gemacht werden und das ist mehr oder weniger das kleinste Problem:
Erneutes Starten der DB: GUI wieder sichtbar
Formular per UNO öffnen: GUI manchmal wieder sichtbar
...
Ausserdem musst Du den User sehr stringent durch das Programm führen, sonst ist er verloren! Du musst ALLE Fenster-schliessen Befehle aus dem Programm putzen oder sie durch Programm-beenden Befehle ersetzen, sonst sind einmal alle Fenster zu, aber die Datenbank (und OOo) ist noch offen

(Ich hatte ja schon erwähnt: Erneutes Starten der DB: GUI wieder sichtbar)
Das Erneute Starten zu verhindern ist eigentlich kein Problem (wie im obigen Link beschrieben die Datenbank per Starter starten, und vor dem Öffnen-Befehl für die Datenbank alle aktuell geöffneten Urls oder Applikationen abfragen (über StarDesktop.getComponents oder
http://www.starbasicfaq.de/ListOfAllUrls.html#Zweig351) und wenn die von der DB schon offen ist, den Starter abbrechen...)
Es geht auch wenn man die sub GUI_ausblenden wie oben beschrieben auch dem Ereignis "Dokument aktivieren" zuweisen, allerdings solltest Du das NUR machen, wenn Du weisst wie man an Makros die in einer ODB-Datei gespeichert sind rankommt ohne die DB zu öffnen! (entzippen...) denn Du wirst dann feststellen, dass permanent die falschen Fenster ausgeblendet werden und den der Dir den Tipp für diese Funktion gegeben hat dorthin wünschen wo der Pfeffer wächst

.
Noch ein kleiner Tip: Verwende zum Testen dieser Funktion den Befehl "beep" und AUF KEINEN FALL PROMPTS (Msgbox ...)! Denn dabei wird jedesmal beim Klick auf OK das Ereignis "Dokument aktivieren" ausgelöst ...
Du kannst aber dieses Ausblenden der falschen Fenster verhindern, indem Du das GUI eindeutig identifizierst (mit StarDesktop.getComponents und immer weiter hangeln bis Du es gefunden hast) und die Eigenschaft visible dieses Objekts dann immer wieder auf false setzt. Der obige Befehl (starDesktop.getCurrentFrame.getContainerWindow()) ist ja nicht gerade eindeutig was die Fensterauswahl betrifft.
Damit wäre also das GUI weg, und die Datenbank einigermassen sicher. Allerdings scheint die Datenbank dadurch ziemliche Probleme zu bekommen. z.B. funktionieren bei mir dann Befehle wie dieser nicht mehr: ThisDatabaseDocument.FormDocuments.getByName( "Adressen" ).open über das UNO Service DatabaseDocument.FormDocuments.loadComponentFromURL kann man zwar an andere objekte ran, aber es gibt auch andere Probleme wie z.B.: "Es besteht keine Verbindung zur Datenbank!" - und das bei einer ODB die die eingebaute HSQL verwendet!!!
Bevor man also daran denkt, das GUI auszublenden sollte man sich gut überlegen wie interaktiv und dynamisch die DB einmal werden soll (je weniger desto eher kann man sich für's GUI-Ausblenden entscheiden).
Zu Guter Letzt: Da es meines Wissens nach keine Rechteverwaltung für Datenbankobjekte gibt, ausser sie kommt von der Backend Datenbank wird es wohl vorerst das Beste sein das Grafische User Interface (jaja, es ist eine Benutzeroberfläche) auch als solches zu verwenden - d.h. alle Symbolleisten und Menüs entsprechend säubern und den User dann drauf loslassen.
g