🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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. 🤗

Starten als Formular-Ansicht ohne die Symbolleisten

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
pixel
Beiträge: 51
Registriert: Mo 14. Nov 2011, 10:27

Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von pixel » Fr 22. Feb 2013, 20:58

Hallo zusammen,

ich erstelle gerade eine kleine DB. Habe mich am Handbuch orientiert und zwei kleinere Probleme bzw. deren Lösung hier im Forum gefunden. Gibt es eigentlich eine Möglichkeit nachher aus Base heraus eine Paket zu schnüren dass man weiter geben kann und alles enthält?

Ich habe zum Beispiel im Formular eine Schaltfläche und darauf eine Grafik. Ich vermute mal die Grafik ist lediglich verknüpft oder?

Schön wäre es wenn man nachher eine Datei hat und bei deren Start wird direkt das Formular geöffnet jedoch ohne die ganzen Symbolleisten von LibreOffice drum herum. Geht so etwas?

Viele Grüsse
pixel

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

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von RobertG » Sa 23. Feb 2013, 10:58

Hallo pixel,

mehrere Probleme auf einmal in einem Thread - das kann schnell dazu führen, dass niemand antwortet.
Zu dem Problem, das im Betreff steht:
Siehe http://www.libreoffice-forum.de/viewtop ... 566#p19171 ... und von dort aus weiter.
Ich habe mich bisher immer gescheut, so einen Weg zu gehen. Natürlich kann ich beim Öffnen von Base direkt ein Formular starten lassen. Nur die Beeinflussung der Größe dieses Formulars ist schon problematisch. Korrekt funktioniert so etwas nur mit Dialogen. Wenn die Größe stimmig ist, dann macht es ja nichts, wenn im Hintergrund weiter die Datenbank liegt.
Wie Du die Symbolleisten bei Formularen raus bekommst steht ja auch im Handbuch. Nur gibt es Probleme - ja nach verwandter Version - mit den Menüs. Die verschwinden beim Start, erscheinen dann aber hartnäckig wieder und sind nicht mehr ausblendbar.

In der Neufassung des Handbuches wird das Folgende stehen:

Code: Alles auswählen

Formulare ohne Symbolleisten präsentieren
Neunutzer von Base sind häufig irritiert, dass z.B. eine Menüleiste existiert, diese aber im Formular
so gar nicht verfügbar ist. Diese Menüleisten können auf verschiedene Arten ausgeblendet
werden. Am erfolgreichsten unter allen LO-Versionen sind die beiden im Folgenden vorgestellten
Vorgehensweisen.
Formulare ohne Symbolleisten in einem Fenster
Ein Fenster lässt sich in der Größe variieren. Über den entsprechenden Button lässt es sich auch
schließen. Diese Aufgaben übernimmt der Window-Manager des jeweiligen Betriebssystems. Lage
und Größe des Fensters auf dem Bildschirm kann beim Start über ein Makro mitgegeben werden.
SUB Symbolleisten_Ausblenden
DIM oFrame AS OBJECT
DIM oWin AS OBJECT
DIM oLayoutMng AS OBJECT
DIM aElemente()
oFrame = StarDesktop.getCurrentFrame()
Der Titel für das Formular wird in der Titelleiste des Fensters angezeigt.
oFrame.setTitle "Mein Formular"
oWin = oFrame.getContainerWindow()
Das Fenster wird auf die maximale Größe eingestellt. Dies entspricht nicht dem Vollbildmodus, da
z.B. eine Kontrollleiste noch sichtbar ist und das Fenster eine Titelleiste hat, über die die Größe
des Fensters geändert und das Fenster geschlossen werden kann.
oWin.IsMaximized = true
Es besteht auch die Möglichkeit, das Fenster in einer ganz bestimmten Größe und mit einer festen
Position darzustellen. Dies würde mit 'oWin.setPosSize(0,0,600,400,15)' geschehen.
Hier wird das Fenster an der linken oberen Ecke des Bildschirms mit einer Breite von 600 Punkten
und einer Höhe von 400 Punkten dargestellt. Die letzte Ziffer weist darauf hin, dass alle Punkte
angegeben wurden. Sie wird als 'Flag' bezeichnet. Das 'Flag' wird auf mit den folgenden
Werten über eine Summierung berechnet: x=1, y=2, Breite=4, Höhe=8. Da x, y, Breite und Höhe
angegeben sind, hat das 'Flag' die Größe 1 + 2 + 4 + 8 = 15.
oLayoutMng = oFrame.LayoutManager
aElemente = oLayoutMng.getElements()
FOR i = LBound(aElemente) TO UBound(aElemente)
IF aElemente(i).ResourceURL = "private:resource/toolbar/formsnavigationbar"
THEN
Wenn es sich um die Navigationsleiste handelt soll nichts geschehen. Das Formular soll
schließlich bedienbar bleiben, wenn nicht das Kontrollfeld für die Navigationsleiste eingebaut und
die Navigationsleiste sowieso ausgeblendet wurde. Nur wenn es sich nicht um die
Navigationsleiste handelt soll die entsprechende Leiste verborgen werden.
Hier wäre es auch möglich, sie als unsichtbar zu deklarieren, Nur erscheint dann, je nach Office-
Version, z.B. die Menüleiste nach einem Klick in ein Formularelement wieder und lässt sich nicht
erneut als unsichtbar deklarieren.
ELSE
msgbox aElemente(i).ResourceURL
oLayoutMng.hideElement(aElemente(i).ResourceURL)
END IF
NEXT
END SUB
Werden die Symbolleisten nicht wieder direkt beim Beenden des Formulars eingeblendet, so
bleiben sie weiterhin verborgen. Sie können natürlich über Ansicht → Symbolleisten wieder
aufgerufen werden. Etwas irritierend ist es jedoch, wenn gerade die Standardleiste (Ansicht →
Symbolleisten → Standardleiste) oder die Statusleiste (Ansicht → Statusleiste) fehlt.
Mit dieser Prozedur werden die Symbolleisten aus dem Versteck ('hideElement') wieder
hervorgeholt ('showElement'). Der Kommentar enthält die Leisten, die oben als sonst fehlende
Leisten am ehesten auffallen.
SUB Symbolleisten_Einblenden
DIM oFrame AS OBJECT
DIM oLayoutMng AS OBJECT
DIM aElemente()
oFrame = StarDesktop.getCurrentFrame()
oLayoutMng = oFrame.LayoutManager
aElemente = oLayoutMng.getElements()
FOR i = LBound(aElemente) TO UBound(aElemente)
oLayoutMng.showElement(aElemente(i).ResourceURL)
' eventuell fehlende wichtige Elemente:
' "private:resource/toolbar/standardbar"
' "private:resource/statusbar/statusbar"
NEXT
END SUB
Formulare im Vollbildmodus
Beim Vollbildmodus wird der gesamte Bildschirm vom Formular bedeckt. Hier steht keine
Kontrollleiste o.ä. mehr zur Verfügung, die gegebenenfalls anzeigt, ob noch irgendwelche anderen
Programme laufen.
FUNCTION Fullscreen(boSwitch AS BOOLEAN)
DIM oDispatcher AS OBJECT
DIM Props(0) AS NEW com.sun.star.beans.PropertyValue
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Props(0).Name = "FullScreen"
Props(0).Value = boSwitch
oDispatcher.executeDispatch(ThisComponent.CurrentController.Frame,
".uno:FullScreen", "", 0, Props())
END FUNCTION
Diese Funktion wird durch die folgenden Prozeduren eingeschaltet. In den Prozeduren läuft
gleichzeitig die vorhergehende Prozedur zum Ausblenden der Symbolleisten ab – sonst erscheint
die Symbolleiste, mit der der Vollbildmodus wieder ausgeschaltet werden kann. Auch dies ist eine
Symbolleiste, wenn auch nur mit einem Symbol.
SUB Vollbild_ein
Fullscreen(true)
Symbolleisten_Ausblenden
END SUB
Aus dem Vollbild-Modus geht es wieder heraus über die 'ESC'-Taste. Wenn stattdessen ein
Button mit einem entsprechenden Befehl belegt werden soll, so reichen auch die folgenden Zeilen:
SUB Vollbild_aus
Fullscreen(false)
Symbolleisten_Einblenden
END SUB
Gruß

Robert
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

pixel
Beiträge: 51
Registriert: Mo 14. Nov 2011, 10:27

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von pixel » So 24. Feb 2013, 08:46

Danke für den Hinweis. Ich dachte dass ist alles ein und das selbe Problem. Ich meinte mich zu erinnern dass früher unter Access alles in eine Datei gepackt wurden konnte und diese dann statisch alles enthielt was benötigt wird (zur weitergabe) und beim ausführen wurde lediglich das Form gestartet. Korrigiert mich wenn ich falsch liege. Werde zukünftig darauf achten nur ein Problem in einem Beitrag zu stellen.

Die Vorgehensweise, welche ins neue Handbuch kommt, werde ich mir anschauen. Danke!

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

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von RobertG » So 24. Feb 2013, 09:24

Hallo pixel,
pixel hat geschrieben:Ich meinte mich zu erinnern dass früher unter Access alles in eine Datei gepackt wurden konnte und diese dann statisch alles enthielt was benötigt wird (zur weitergabe) und beim ausführen wurde lediglich das Form gestartet. Korrigiert mich wenn ich falsch liege.
Für Dich gibt es ein "früher" mit Access. Ich habe damit nie gearbeitet, da ich kein MSO besessen habe.
In Base ist es im Prinzip so, dass alles zusammen in dem *.odb-Päckchen ist. Und wenn Du dann einmal bei den Beispieldatenbanken zum Handbuch nachsiehst, dann wirst Du auch da entdecken, dass das nur *.odb-Dateien sind. Bei den Beispielen mit Makros zumindest sind auch Icons auf Buttons enthalten. Sehe ich mir die Button an, so erscheint dort bei den Grafiken "eingebettete Grafik".
Nur bei Berichten gibt es zur Zeit mit dem Einbetten von Grafiken Probleme. Berichte lesen Grafiken grundsätzlich von Außerhalb ein. Die einzige Möglichkeit, die Berichte zu überlisten, ist, die Bilder selbst in die Datenbank mit zu übernehmen.

Gruß

Robert
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

paulderfinne
Beiträge: 71
Registriert: Mi 20. Feb 2013, 13:49

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von paulderfinne » Mo 25. Feb 2013, 11:47

Hallo ich klinke mich hier mit rein, weil ich denke, mein Problem ist ähnlich gelagert. Nachdem mir hier bisher so super geholfen wurde, hoffe ich auch jetzt auf eine schnelle Lösung.

Meine Minilösung ist nun also fertig und ich möchte, dass einige User dort nun Daten eibgeben. Kurz: damit arbeiten. Da sie aber absolut keine Ahnung von Datenbanken, Entwicklungsumgebungen und co. haben, sollen sie lediglich die nackten Formulare zu sehen bekommen. Keine Entwicklungsumgebung, Menüs, Symbolleisten etc.pp.

Leider finde ic dazu nichts Vernünftiges. Dein SymbolleistenentfenungsSub ( @Robert ) kommt dem ja schon ziemlich nahe, aber irgendwie doch noch nicht so ganz.

Ich möchte halt, dass das ganze wie ein ganz normales "Dateneingabeprogramm" aussieht.

Hoffentlich habe ich mich gut genug ausgedrückt.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von gogo » Mo 25. Feb 2013, 16:46

Folgendes Makro an das Ereignis "Dokument öffnen" des Datenbankfensters binden:

Code: Alles auswählen

sub DB_Startup
    ThisComponent.CurrentController.Frame.ContainerWindow.setVisible(false)
    ThisDatabaseDocument.FormDocuments.getByName("Erfassung").open
end sub
Dem Ereignis "Dokument öffnen" des Formulars "Erfassung" dann das Makro von Robert zuweisen.

Wichtig:

Um die Datenbank korrekt zu schließen musst Du in einem Basic-Modul AUßERHALB der Datenbank folgendes Makro speichern:

Code: Alles auswählen

sub Datenbank_schliessen(oEvent)
	oEvent.Source.Model.Parent.Parent.Parent.Parent.close(true)
end sub
Dann erstellst Du in Deinem Formular einen Button zum Beenden, und dem Ereignis "Aktion ausführen" dieses Buttons weist Du dann das Makro "Datenbank_schliessen" zu. Über die Kaskade ".Parent.Parent.Parent.Parent" wird dabei die versteckte UID gefunden, und geschlossen - dabei werden Betriebsystem-unabhängig alle Frames der Datenbank ebenfalls geschlossen. Das Speichern des Makros außerhalb der DB (z.B. in einer Extension die Du mit der Datenbank installierst) ist wichtig, da das Schließen der Datenbank während eines ihrer Makros noch läuft einen Error auslöst.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

paulderfinne
Beiträge: 71
Registriert: Mi 20. Feb 2013, 13:49

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von paulderfinne » Di 26. Feb 2013, 09:02

Danke für deine Ausführungen gogo. Das mit der Extension, die ich mit der Datenbank installiere klingt abenteurlich und ich habe natürlich gar keine Ahnung wie man das anstellen muss. Zudem ich die Datenbank ja schon installiert habe. Gilt das gesate übrigens auch für MySQI. Ich arbeite damit. Aus alter Gewohnheit, irgendwie.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von gogo » Di 26. Feb 2013, 10:33

wieder ein Zeilenprobelm:

Code: Alles auswählen

oDispatcher.executeDispatch(ThisComponent.CurrentController.Frame,
".uno:FullScreen", "", 0, Props())
in

Code: Alles auswählen

oDispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:FullScreen", "", 0, Props())
Das mit der Extension ist ganz einfach:

Extras/Makros/Makros verwalten/LibreOffice Basic
dann auf den Button "Verwalten"
dann den Index "Bibliotheken"
dann auf "Neu ..."
und im folgenden Fenster den Namen der neuen Bibliothek eingeben. (z.B. "PlauderFinneMakros")

Dann kannst Du in dieser neuen Bibliothek Deine Makros schreiben - im Wesentlichen ist das das Beenden-Makro, es können aber klarerweise auch ein Haufen andere Makros sein, die Du "zentral" verwalten bzw. updaten möchtest.

Im selben Fenster in dem sich der "Neu ..."-Button befindet gibt's auch einen "Importieren" bzw. einen "Exportieren" Button. Damit kannst Du Deine Bibliothek wenn sie fertig ist in eine Extension verpacken: Klick auf "Exportieren" wenn Deine Bibliothek markiert ist, und Du wirst gefragt ob Du die Bibliothek als "Extension" oder als "Basic-Bibliothek" exportieren willst ('Extension' auswählen ;) ), Dateiname zum speichern wählen (z.B. "PlauderFinneMakros v1.0 2013-02-25") und schon hast Du eine fix-fertige *.oxt-Datei, die Du auf jedem System als Extension laden kannst. Im Extension-Manager wird der Dateiname der oxt-Datei verwendet, d.h. man kann jederzeit überprüfen ob man die aktuelle Version installiert hat.

Damit Deine Makros in der "PlauderFinneMakros"-Bibliothek aus der odb-Datei heraus funktionieren musst Du Die Bibliothek laden, d.h. in das Startmakro Deiner Datenbank folgenden Codeblock einbauen:

Code: Alles auswählen

If (Not GlobalScope.BasicLibraries.isLibraryLoaded("PlauderFinneMakros")) Then
    GlobalScope.BasicLibraries.LoadLibrary("PlauderFinneMakros")
End If
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

paulderfinne
Beiträge: 71
Registriert: Mi 20. Feb 2013, 13:49

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von paulderfinne » Di 26. Feb 2013, 14:14

Danke dafür. Das ist sehr interessant. Kann sicherlich auch gebrauchen.
(Den Synatx Error hatte ich dann doch selber gefunden und den Beitrag wieder gelöscht, weil es doch zu simpel war und ich euch nicht damit belästigen wollte)
Nun erstmal wieder zurück zu Roberts Programm.

Die Subroutine FUNCTION Fullscreen(boSwitch AS BOOLEAN)
scheint nur den Anfangsbildschirm, den mit der ganzen Datenbank drauf zu maximieren. Ich möchte aber das "jetzige" Formular, das ich gerade aufgemacht habe maximieren.

Übrigens scheint das auch für die Entfernung der Symbolleisten zu gelten. Also das Fenster mit der Datenbank wird "nackig", aber ich wollte das für die Formulare, die ich aufrufe. Sorry wenn ich in meiner unendlichen Unwissenheit so dumme Fragen stelle.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Starten als Formular-Ansicht ohne die Symbolleisten

Beitrag von gogo » Di 26. Feb 2013, 15:43

Layout-Eigenschaften werden von der UID nicht vererbt - d.h. dass Du in jedem Formular unter "Dokument öffnen" dieses Makro laufen lassen musst. Damit's einfacher wird: mach' Dir ein Vorlagen-Formular, das Du entsprechend ausrüstest, dieses kannst Du dann mit Copy/Paste in der UID einfügen, und nach Belieben umbenennen.

Ach ja - noch was:
Das Entfernen der Fensterdekoration ist ... eine schöne Sache, außer wenn man das Formular mal bearbeiten muß! Denn auch im Bearbeitungsmodus wird das Ereignis "Dokument öffnen" ausgelöst und das Makro ausgeführt, d.h. einmal Makro drin, immer Deko weg. Und ohne Menüleiste kann man auch die Makro-Zuweisung nicht mehr aufheben ;) (außer per externem Makrocode). 2 Lösungen bieten sich an:

1. In einem der geöffneten Formulare eine Checkbox machen, die per default True ist und das Makro fragt diesen Wert ab - wenn Du also das Form bearbeiten willst: Haken rausnehmen und die Fensterdeko ist wieder da. (Am besten Du setzt auf die Eigenschaft "Status geändert" der Checkbox auch ein Makro, das im aktuellen Formular die Deko ändert...)

2. Notbremse: irgendein Dokument öffnen und in der die Makrosicherheit auf "sehr hoch" stellen, eventuelle vertrauenswürdige Quellen deaktivieren - dann die odb wieder öffnen, dann werden keine Makros ausgeführt...

Daher: vorher überlegen was man will :)

und - wenn wir schon dabei sind:
Wenn die UID ausgeblendet ist, hat man keinen Zufgriff auf die Makros dieser ODB! Daher neben der oben erwähnten Checkbox evtl. einen Button mit dem man die UID wieder einblenden kann ;)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


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