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

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!
Hast Du richtig erkannt... für eine gemeinsame Aktion (Schliessen des aktuellen Formulars und Öffnen eines weiteren) braucht es ein Makro.
[color=#800000]Moderation,4[/color]: 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: [i]button[/i]) die [color=#008000]Aktion[/color]: [color=#0040FF]Dokument/Webseite öffnen[/color] ausgewählt wird, und in [color=#008000]URL[/color] der Befehl [color=#0040FF].uno:CloseDoc[/color] 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 [color=#0040FF]sDatenbank[/color] und der Name des Formulars zum Öffnen [color=#0040FF]sFormName_Open[/color].
[code]
' 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[/code]
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!