Formular durch Button öffnen bzw. schließen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Formular durch Button öffnen bzw. schließen

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

von komma4 » Mo, 26.07.2010 09:04

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!

Nach oben