Formular durch Button öffnen bzw. schließen

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

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular durch Button öffnen bzw. schließen

Beitrag von komma4 »

Hast Du richtig erkannt... für eine gemeinsame Aktion (Schliessen des aktuellen Formulars und Öffnen eines weiteren) braucht es ein Makro.

Moderation,4: Deswegen habe ich den Thread in das entsprechende Unterforum verschoben!


Für Suchende:
Das Schliessen des aktuellen Forumlars erreicht man, wenn bei einem Schaltflächen-Kontrollelement (vulgo: button) die Aktion: Dokument/Webseite öffnen ausgewählt wird, und in URL der Befehl .uno:CloseDoc eingetragen ist.


Zur Frage:
Natürlich gibt es dazu Makros, man muss nur suchen 8)
Hier im Forum bin ich nicht fündig geworden, dafür aber im Englischsprachigen (http://www.oooforum.org/forum/viewtopic.phtml?t=94874)

Anzupassen sind im folgenden Makro der Name der (registrierten) Datenbank sDatenbank und der Name des Formulars zum Öffnen sFormName_Open.

Code: Alles auswählen

' SUB muss von einem Kontrollelement eines BASE-Fromulars ausgelöst werden
Sub openFormAndCloseThisone( oEvent )

' Befehle zum Schliessen
rem ----------------------------------------------------------------------
rem get access to the document
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


' ANPASSEN !
sDatenbank = "ooo_baseHSQLDB" ' registrierter Name
sFormName_Open = "frm_Liste_Tabelle1" ' angezeigter Formularname

'
oDBContext = createUnoService( "com.sun.star.sdb.DatabaseContext" )
oDatenbank = oDBContext.getByName( sDatenbank )
oDatenbankDok = oDatenbank.DatabaseDocument

oConnection = oEvent.Source.getModel().getParent().ActiveConnection
dim aOpenArgs(1) as new com.sun.star.beans.PropertyValue
aOpenArgs(0).Name = "OpenMode"
aOpenArgs(0).Value = "open"
aOpenArgs(1).Name = "ActiveConnection"
aOpenArgs(1).Value = oConnection

oDatenbankDok.FormDocuments.loadComponentFromURL( sFormName_Open, "_blank", 0, aOpenArgs() )


rem ----------------------------------------------------------------------

dispatcher.executeDispatch(document, ".uno:CloseDoc", "", 0, Array() )

End Sub
Hinweis:
eine Kombination des erstgenannten Dispatcher-Befehls und eines Makros zum Öffnen scheitert daran, dass OOo das gerade geöffnete Formular schliesst.


Viel Vergnügen!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)