von eBayer » Sa, 13.06.2009 18:19
schau, was ich dir beim erstenmal geantwortet habe....
Ich wollte es Dir etwas allgemeingültiger erklären, ist aber offensichtlich etwas zuviel für Dich.
Mußt halt noch etwas trainieren..... wirklich!
Damit Du meinen Lösungsvorschlag einfach in Dein Formular übernehmen kannst, habe ich ihn nun etwas simpler gestaltet.
Also einfach das unten stehende Sub in Dein Formular kopieren, ok?
Mit dem Ende-PushButton willst Du ja vermutlich das Formular beenden..... Also verbindest Du bei dem Pushbutton das Ereignis "beimAuslösen" mit dem unten stehenden Makro.
Leider wird das Makro nicht angesprungen, wenn das Formular mit dem X geschlossen wird.
Wie das geht, werde ich Dir ggf. in einem weiteren Schritt zeigen.
Wenn Du das Makro ohne Veränderung so reinkopiert und mit dem PushButton verbunden hast, sollte es auf Anhieb laufen!
Gruß und viel Erfolg mit der Bitte um Erfolgsmeldung
eBayer
Sub DocumentSchliessen
Dim oDoc As Object
Dim oDispatch As Object
ThisComponent.Parent.store() ' Daten speichern.... zur Sicherheit
oDoc = ThisComponent.CurrentController.Frame
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array()) ' jetzt das aktive Formular schließen
' ***************************************************************************
' * Bei der folgenden Methode bleibt OO im Speicher *
' ***************************************************************************
oDoc = ThisComponent.Parent.CurrentController.Frame ' und nun das Hauptfenster (Parent) holen
oDoc.close(true) ' und schließen
' ***************************************************************************
' * Hier kommt als Alternative die harte Methode -anstatt close(true)-, die OO komplett beendet (incl. Schnellstart)*
' ***************************************************************************
' oDoc = ThisComponent.Parent.CurrentController.Frame
' oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
' oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array())
' oDispatch.executeDispatch(oDoc, ".uno:CloseWin", "", 0, Array())
End Sub
schau, was ich dir beim erstenmal geantwortet habe....
Ich wollte es Dir etwas allgemeingültiger erklären, ist aber offensichtlich etwas zuviel für Dich.
Mußt halt noch etwas trainieren..... wirklich!
Damit Du meinen Lösungsvorschlag einfach in Dein Formular übernehmen kannst, habe ich ihn nun etwas simpler gestaltet.
Also einfach das unten stehende Sub in Dein Formular kopieren, ok?
Mit dem Ende-PushButton willst Du ja vermutlich das Formular beenden..... Also verbindest Du bei dem Pushbutton das Ereignis "beimAuslösen" mit dem unten stehenden Makro.
Leider wird das Makro nicht angesprungen, wenn das Formular mit dem X geschlossen wird.
Wie das geht, werde ich Dir ggf. in einem weiteren Schritt zeigen.
Wenn Du das Makro ohne Veränderung so reinkopiert und mit dem PushButton verbunden hast, sollte es auf Anhieb laufen!
Gruß und viel Erfolg mit der Bitte um Erfolgsmeldung
eBayer
Sub DocumentSchliessen
Dim oDoc As Object
Dim oDispatch As Object
ThisComponent.Parent.store() ' Daten speichern.... zur Sicherheit
oDoc = ThisComponent.CurrentController.Frame
oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array()) ' jetzt das aktive Formular schließen
' ***************************************************************************
' * Bei der folgenden Methode bleibt OO im Speicher *
' ***************************************************************************
oDoc = ThisComponent.Parent.CurrentController.Frame ' und nun das Hauptfenster (Parent) holen
oDoc.close(true) ' und schließen
' ***************************************************************************
' * Hier kommt als Alternative die harte Methode -anstatt close(true)-, die OO komplett beendet (incl. Schnellstart)*
' ***************************************************************************
' oDoc = ThisComponent.Parent.CurrentController.Frame
' oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
' oDispatch.executeDispatch(oDoc, ".uno:CloseDoc", "", 0, Array())
' oDispatch.executeDispatch(oDoc, ".uno:CloseWin", "", 0, Array())
End Sub