Formular schließen?

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

Moderator: Moderatoren

eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular schließen?

Beitrag 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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Formular schließen?

Beitrag 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
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Antworten