Seite 2 von 2

Re: Formular schließen?

Verfasst: Mo, 29.06.2009 21:05
von eBayer
Hallo Stephan,
entschuldige meine späte Reaktion.
1. unter 3.1 führt ThisComponent.Parent.store() zu Fehlern im folgenden Programmablauf. Es scheint, daß Du darauf unter 3.1 verzichten kannst. Ist ja ohnehin eine reine Vorsichtsmaßnahme gewesen.
2. Dein Problem daß beim schließen der Startroutine alle offenen Fenster stehen bleiben, kenne ich.
Ich habe für diesen Fall in die Main-Routine jedes Formulars eingebaut, daß ThisComponent in einem globalen Array gespeichert und beim schließen des Formulars wieder daraus entfernt wird.
So kann ich beim schließen der Startanwendung noch schnell überprüfen, ob noch Fenster offen und damit zu schließen sind.
In einer Schleife arbeite ich dieses Array ab und schließe alle Fenster.
Hilft das? Oder hast Du schon eine (vielleicht bessere) Lösung gefunden? Würde mich interessieren.
Gruß eBayer

Re: Formular schließen?

Verfasst: Mo, 29.06.2009 21:28
von geimist
Hallo eBayer,

danke für deine Antwort. Mit dem schliessen aller Formulare habe ich es jetzt so gemacht, dass ich immer die "Mutter"-Anwendung (Datenbank) starte und mit dem Code meines letzten Beitrages das Hauptfenster minimiere, sowie mein Startformular öffne.
Aber wie schon gesagt: Die Datenkonsistenz ist noch nicht richtig gewährleistet.

Mit diesem Fensteraufruf ja:

Code: Alles auswählen

Sub Formularoeffnen
   Dim prop(1) as New com.sun.star.beans.PropertyValue
   Dim dbContext As Object
   dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDataSource = dbContext.GetByName("DB")
   oForms = oDataSource.DatabaseDocument.FormDocuments
   oForms.loadComponentFromURL("STARTFORMULAR","_blank",63,prop())
End Sub
Aber mit diesem Code nicht:

Code: Alles auswählen

Dim Context AS Object
Dim Conn As Object
Dim DB As Object
Dim FormDoc As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim FormName As String
       
FormName = "STARTFORMULAR"
Context=CreateUnoService("com.sun.star.sdb.DatabaseContext")
DB=Context.getByName("DB")
Conn=DB.getconnection("","")
Args(0).Name="ActiveConnection" : Args(0).Value=Conn
Args(1).Name="OpenMode" : Args(1).Value="open"
FormDoc=DB.DatabaseDocument.FormDocuments.loadComponentFromURL(FormName,"_self",2,Args)
FormDoc.CurrentController.Frame.ContainerWindow.setFocus()
Zumindest komme ich ja mit der ersten Variante zurecht.

Hättest du auch noch eine Idee bei dieser Frage: http://www.oooforum.de/viewtopic.php?f= ... 3e#p108189

Noch einen schönen Abend