StarDesktop vom Formular aus manipulieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

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

StarDesktop vom Formular aus manipulieren

Beitrag von ejomi »

Wie kann ich per Auto-Makro das Datenbank-Fenster ausblenden (oder
wenigstens automatisch beim Start minimieren), damit nur mein aktives
Formular auf dem Desktop sichbar bleibt (manche nennen sowas auch
"Runtime-Simulation")?

ACHTUNG: das Makro soll sich *nicht* im "MyMacro"- oder
"openoffice.org"-Verzeichnis, sondern nur innerhalb des
Formular-Containers befinden!

Ich habe folgenden Lösungsansatz zum Minimieren per Windows-API:

Declare Function ShowWindow Lib "user32" (ByVal lHwnd As Long, ByVal
lCmdShow As Long) As Boolean

Sub MinimizeDesktop
Dim WindowFrame as Object, WindowContainer As Object, WindowHandle As
Long
WindowFrame = StarDesktop.getActiveFrame()
WindowContainer = WindowFrame.getContainerWindow
WindowHandle = WindowContainer.getWindowHandle(dimarray(), 1)
' call the WIN32-API function (declaration: see module-header above!)
ShowWindow(WindowHandle, 2)
End Sub

... das funk't aber nur, wenn sich das Makro im Ausführungsbereich
von "MyMacros" befindet und läßt sich nicht innerhalb des Formulars
starten (Fehler: unbekannte Objekt-Eigenschaft oder so).

Die Kern-Frage ist demnach: wie spreche ich das StarDesktop vom
Formular aus an? Das Objekt "StarDesktop.getActiveFrame()" liefert
mir nur einen Handle zu dem gerade aktiven Frame (was bei einem
geöffneten Formular eben das Formular selbst ist und im vorliegenden
Fall nicht die gewünschte Eigenschaft liefert).

Wenn diese Frage geklärt ist, läßt sich (hoffentlich) auch eine
Methode finden, den StarDesktop vollständig zu verstecken, anstatt
ihn nur zu minimieren.

Ich hoffe, ich habe mich verständlich ausgedrückt?!

Herzliche Grüße und vorab schon mal vielen Dank für die Antworten:
ejomi
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey ejomi,

Also, es gibt klare Strategien zu "eigenständigen Applikationen", also Anwendungen auf der Basis von OOo, die aussehen,als seine Sie eignständige Programme - ohne störende Fenster, ohne störende Menü- und Symbolleisten etc.
Um das alles hier zu beschreiben, brächten wir viel Zeit und Platz :-)

Ein paar Tipps:
Grundsätzlich geht auch dein Weg, du musst dann jedoch auf dem StarDesktop zunächst das Objekt deiner Datenban-Applikation idenifizieren (und sas sit etwas komplizierter...), dann kannst du das Objekt "unsichtbar" schalten oder minimieren.

Aber warum so umständlich? Wenn du die Base-Applikation gar nicht brauchst (asl sichtbares Fenster) , so nimm doch einfach ein externen Formular. Dann öffnet sich Base gar nicht - ist also gar nicht zu sehen. Fertig. Brauchst du kein Makro, nichts.
Und wenn du dein Formular schon erstellt hast, so wähle Datei - Kopie Speichern unter... und speichere das Formular extern. Jetzt hast du ein unabhängiges Writer-Dokument (dein Formualr), und musst nur noch die Datenbank wieder manuell anbinden (über die Formualreigenschaften). Fertig.
Man kann auch das Formular aus dem Base-Container extrahieren - dann bleiben die Datenbank-Verbindungen erhalten. Aber das ist deutlich komplizierter.

Hoffe, es hilft.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Beitrag von ejomi »

Hallo Thomas,

erstmal vielen Dank für die schnelle Antwort.

Formular als Writer-Dokument exportieren hab ich schon mal probiert - aber das Problem: der User kann nach Belieben in dem Formular herumkritzeln, Steuerelemente verschieben usw. - mach ich was falsch?

Mich würde trotzdem das Thema "Application-Object" interessieren. Führt das hier zu weit, oder kannst Du mir noch ein paar weiterführende Infos oder wenigstens Links zu Beispiel-Scripts geben? ... das fände ich toll!

Gruß: ejomi
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey ejomi,
Formular als Writer-Dokument exportieren hab ich schon mal probiert - aber das Problem: der User kann nach Belieben in dem Formular herumkritzeln, Steuerelemente verschieben usw. - mach ich was falsch?
Ja, aber das kann erdoch in Base genauso. Auch Base nutzt nur ein Writerdokument - und wenn das Formular nicht in der Entwurfsansicht geöffent wird, kannst du dort nix verschieben etc.
Also, da bigt es keinen Unterschied.

OK. Abhilfe: Entweder du erzeugst dien formular in Calc - von vorn herein extern, ansosnten geht das dort genauso. In Calc kannst du das Dokument schützen - und ohne Passwort kommt keiner mehr an die Formularfunktionen ran.
Oder du lässt beim Öffnen per Makro alle in Writer alle Menüleisten etc "verschwinden", dann gibt es für den Benutzer keine Möglichkeit mehr, über die Menüfunktionen auf den Entwurfamodus umzustellen. Dazu ist aber ein wenig Makrocode erforderlich - und du solltes dir vorher eine Strategie überlegen, wie du selbst wieder an das Formular herankommst. Denn für dich gilt natürlich das gleiche ;-)

Tia, Links zu Codebeispielen. Ja, ich wollte mal einen entsprechenden Artikel veröffentlichen - ist noch nicht fertig. Da bleibt bisher nur: In dem Buch hier sind Codebeispiele drin, inklusiv Erklärung.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ejomi
***
Beiträge: 84
Registriert: Mi, 06.09.2006 15:20

Beitrag von ejomi »

Hai (wo?) Thomas!

Formular unter Calc entwerfen und schützen - das werde ich mal probieren.

Ansonsten: Menüs per Makro im Dokument zu verstecken ist nicht so schwierig. Ich hatte mal in einer Erst-Version jede einzelne Menu-Bar mit ...LayoutManager.showElement("private:resource/toolbar/...usw..") abgeschaltet - furchtbar umständlich. Viel cooler geht das so:

ThisComponent.CurrentController.Frame.LayoutManager.visible=false

... und weg sin'se !

Danke noch für den Buch-Tip (wer gibt denn freiwillig 35,- Euro aus, wenn die Software schon umsonst war?). Du hast natürlich recht: irgendwann sollte sich jeder dazu durchringen, auch mal was zu bezahlen, wenn er halbwegs professionell arbeiten will.

Fernseher ist sowieso out! Ein Zweit-Buch im Wohnzimmer-Regal sein Eigen nennen zu können - das ist absolute exorbi! In diesem Sinne: Zweit-Buch muß her!

Herzliche Grüße aus dem fernen Dresden:
ejomi
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey ejomi,
ThisComponent.CurrentController.Frame.LayoutManager.visible=false

... und weg sin'se !
:wink: Zumindest fast.... die Statusleiste bleibt aufgrund eines Bugs aktuell bestehen - und muss gesondert ausgeblendeet werden ....
Ein Zweit-Buch im Wohnzimmer-Regal sein Eigen nennen zu können - das ist absolute exorbi! In diesem Sinne: Zweit-Buch muß her!
Ganz meine Worte - der Trend geht ganz eindeutig zum Zweitbuch :-) Und zur Einrichtung soll es natürlich auch passen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten