Makro soll Formular schließen

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

Moderator: Moderatoren

CoolTux
Beiträge: 4
Registriert: Di, 20.05.2008 07:34

Makro soll Formular schließen

Beitrag von CoolTux »

Hallo Leute

Code: Alles auswählen

Sub close_Window
   Dim Document   as Object
   Dim Dispatcher as Object
   Dim oForm as Object

' Frage für MsgBox
   Frage = "Möchten Sie das Formular wirklich schließen "+chr(13)+_
            "und alle Eingaben speichern? "
   
' falls auf Nein geklickt, Sub verlassen         
   If  MsgBox ( Frage,36) = 7 Then
      Exit Sub
   End If

' Zugriff auf Dokument
   Document   = ThisComponent.CurrentController.Frame
   Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   
' Änderungen im Formular speichern, nicht im ungespeicherten Datensatz
   Dispatcher.executeDispatch(Document, ".uno:Save", "", 0, Array())
   
' Zugriff auf das Formular und speichern des aktuellen Datensatzes
   oForm = ThisComponent.DrawPage.Forms.getByName("F_Main")  ' geht auch: Forms(0)
   If oForm.IsNew then oForm.InsertRow else oForm.UpdateRow   
   
' Formular schließen
   ThisComponent.CurrentController.Frame.Close(False)

End Sub
Das Formular wird geschlossen und die Daten auch gespeichert.
Leider bekomme ich eine Fehlermeldung wenn ein leerer Datensatz vorhanden ist oder wenn Felder noch nicht gefüllt sind welche aber zwingend gefüllt sein sollen. Wie kann ich das umgehen oder schöner machen. ein Basic Error ist für den normalen User nicht sehr aussagekräftig.
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makro soll Formular schließen

Beitrag von Jörg »

Hallo,
vielleicht hilft das?

Code: Alles auswählen

Sub Beenden
oDoc = thisComponent
odoc.store
odoc.close(true)
End Sub
Deine msg box voranstellen.
Gruß
Gruß Jörg

Win 10 Pro AOO 4.1.15
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Makro soll Formular schließen

Beitrag von pmoegenb »

Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
CoolTux
Beiträge: 4
Registriert: Di, 20.05.2008 07:34

Re: Makro soll Formular schließen

Beitrag von CoolTux »

Code: Alles auswählen

Sub close_Window
   Dim Document   as Object
   Dim Dispatcher as Object
   Dim oForm as Object

[b]Sub Beenden
oDoc = thisComponent
odoc.store
odoc.close(true)
End Sub[/b]

' Frage für MsgBox
   Frage = "Möchten Sie das Formular wirklich schließen "+chr(13)+_
            "und alle Eingaben speichern? "
   
' falls auf Nein geklickt, Sub verlassen         
   If  MsgBox ( Frage,36) = 7 Then
      Exit Sub
   End If

' Zugriff auf Dokument
   Document   = ThisComponent.CurrentController.Frame
   Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   
' Änderungen im Formular speichern, nicht im ungespeicherten Datensatz
   Dispatcher.executeDispatch(Document, ".uno:Save", "", 0, Array())
   
' Zugriff auf das Formular und speichern des aktuellen Datensatzes
   oForm = ThisComponent.DrawPage.Forms.getByName("F_Main")  ' geht auch: Forms(0)
   If oForm.IsNew then oForm.InsertRow else oForm.UpdateRow   
   
' Formular schließen
   ThisComponent.CurrentController.Frame.Close(False)

End Sub
Hallo Jörg

Vielen Dank für Deine Antwort. Meintest Du das so. Aber so kann das doch nicht gehen oder?
Bin nicht so toll in programmieren.



Gruß
Leon
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makro soll Formular schließen

Beitrag von Jörg »

Hallo, suche mir die Sachen auch imForum zusammen.
falls das unten nicht klappt, muß noch jemand anderes helfen. :(
Gruß
Jörg

Code: Alles auswählen

    
    [b]Sub Beenden
rem ----------------------------------------------------------------------
antwort = msgbox("Dein Text", 33)                   statt "Nein", geht auch abbrechen
if antwort = 2 Then
       exit sub
end if      
rem define variables
rem-------------------------------------------------------------------------- 
    oDoc = thisComponent
    odoc.store
    odoc.close(true)
    End Sub[/b]
   
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten