Seite 1 von 1
[Gelöst] Auf geöffneten Dialog prüfen
Verfasst: Fr, 15.04.2011 11:26
von keksi1970
Hallo zusammen,
ich brauche Hilfe, um auf einen bereits geöffneten Dialog zu prüfen. ( Hinweise, Vorschläge, Lösungen sind willkommen ). Ich weiß z.Zt. nicht, wo ich danach suchen soll.
Folgendes Szenario :
eine Datei öffnet einen Dialog zur Kommunikation mit einer MySQL-DB.
Jetzt kommt dem Anwender aber was dazwischen und dieser öffnet eine andere Datei, die wiederum einen Dialog öffnet, ebenso Verbindung zur MySQL-DB.
Folglich stürzt Basic mit einem Laufzeitfehler ab.
Jetzt würde ich gerne prüfen, ob in irgendeiner OOO-Instanz schon ein Dialog geöffnet ist, so dass kein weiterer geöffnet werden kann.
mfg
Andreas
Re: Auf geöffneten Dialog prüfen
Verfasst: Fr, 15.04.2011 15:19
von komma4
keksi1970 hat geschrieben:Folglich stürzt Basic mit einem Laufzeitfehler ab.
Warum?
Fehlermeldung?
Ansonsten: setze eine globale Variable, wenn ein Dialog geöffnet ist und frage diese vor weiteren Versuchen ab.
Re: Auf geöffneten Dialog prüfen
Verfasst: Mo, 18.04.2011 12:17
von keksi1970
Die einzige Meldung : BASIC-Laufzeitfehler, Objektvariable nicht belegt.
Die Variablen sind jedoch einwandfrei deklariert und haben auch unterschiedliche Namen. Die Reihenfolge des Startens spielt keine Rolle. Sobald das hinterlegte Makro auf den Dialog oder ein Objekt im Dialog zugreift, bricht Basic mit dieser Fehlermeldung ab.
Daher suche ich nun eine Möglichkeit, auf einen bereits geöffneten Dialog zu prüfen.
Re: Auf geöffneten Dialog prüfen
Verfasst: Mo, 18.04.2011 12:44
von Karolus
Hallo
Die Fehlermeldung deutet eher darauf hin das eine Variable noch nicht deklariert/intitialisiert wurde, evtl. der Dialog selbst ?
Hier mal ein Minimalbeispiel wie du jederzeit "myDlg.execute()" ausführen kannst, und nur im Fehlerfall vorher deklarierst.
Code: Alles auswählen
Global MyDlg as Object 'oder public ... ?
Sub create
MyDlg= CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
End Sub
sub ausfuehren
onError: create
myDlg.execute()
end sub
Gruß Karo
Re: Auf geöffneten Dialog prüfen
Verfasst: Mo, 18.04.2011 13:34
von komma4
keksi1970 hat geschrieben:Die einzige Meldung : BASIC-Laufzeitfehler, Objektvariable nicht belegt.
Das bedeutet, dass bei der Belegung des Objektes ein Fehler aufgetreten ist und Du deswegen nicht auf das Objekt zugreifen kannst.
Zeige uns dochmal den Code

Re: Auf geöffneten Dialog prüfen
Verfasst: Mo, 18.04.2011 14:09
von keksi1970
komma4 hat geschrieben:keksi1970 hat geschrieben:Die einzige Meldung : BASIC-Laufzeitfehler, Objektvariable nicht belegt.
Das bedeutet, dass bei der Belegung des Objektes ein Fehler aufgetreten ist und Du deswegen nicht auf das Objekt zugreifen kannst.
Zeige uns dochmal den Code

1. Datei
Code: Alles auswählen
Dialoglibraries.Loadlibrary("Standard")
EingabeDlg = CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
2. Datei
Code: Alles auswählen
Dialoglibraries.Loadlibrary("Standard")
oPerfDlg = CreateUnoDialog(Dialoglibraries.Standard.PerfDialog)
Und hier der 1. Zugriff der 2. Datei bei geöffnetem Dialog der 1.
3. Datei
Code: Alles auswählen
Dialoglibraries.Loadlibrary("Standard")
SokoDlg = CreateUnoDialog(Dialoglibraries.Standard.SoKoDlg)
Bei Zugriff auf ein Dialog-Objekt :
Die Fehlermeldung kommt wie gesagt nur, wenn bereits einer dieser 3 Dialoge gestartet ist ( Es gibt mehr als diese 3 Dateien ). wenn ich den gestarteten Dialog schliesse, ohne die Datei zu beenden, gibts keinen Fehler.
Re: Auf geöffneten Dialog prüfen
Verfasst: Mo, 18.04.2011 15:38
von DPunch
Aloha
Das ist ein schon seit über einem Jahr bekanntes Problem, siehe auch
Bug 109032 - CreateUnoDialog returns Null when Dialog/s running from other odb file at the same time.
Das einfachste ist die Abfrage mit isNull nach Erzeugen des Dialogs.
Code: Alles auswählen
oPerfDlg = CreateUnoDialog(Dialoglibraries.Standard.PerfDialog)
If isNull(oPerfDlg) Then
MsgBox "Es läuft bereits ein anderer Dialog oder Dialog nicht gefunden"
Exit Sub
End If
oPerfDlg.getControl("User").text = UserName
Die zweite, sehr viel umständlichere Variante wäre das Verwenden einer, bzw mehrerer globaler Variablen.
Re: [Gelöst] Auf geöffneten Dialog prüfen
Verfasst: Di, 26.04.2011 08:34
von keksi1970
Hallo DPunch,
ich war doch froh keine globalen Variablen nutzen zu müssen
Deine Lösung funktioniert einwandfrei.
Vielen Dank
Andreas