[Gelöst] Auf geöffneten Dialog prüfen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [Gelöst] Auf geöffneten Dialog prüfen

Re: [Gelöst] Auf geöffneten Dialog prüfen

von keksi1970 » Di, 26.04.2011 08:34

Hallo DPunch,

ich war doch froh keine globalen Variablen nutzen zu müssen ;)

Deine Lösung funktioniert einwandfrei.

Vielen Dank

Andreas

Re: Auf geöffneten Dialog prüfen

von DPunch » Mo, 18.04.2011 15:38

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: Auf geöffneten Dialog prüfen

von keksi1970 » Mo, 18.04.2011 14:09

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 8)
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.

Code: Alles auswählen

oPerfDlg.getControl("User").text = UserName
3. Datei

Code: Alles auswählen

Dialoglibraries.Loadlibrary("Standard")
SokoDlg = CreateUnoDialog(Dialoglibraries.Standard.SoKoDlg)
Bei Zugriff auf ein Dialog-Objekt :

Code: Alles auswählen

SpediCtr = SoKoDlg.getControl("SpediteurList")
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

von komma4 » Mo, 18.04.2011 13:34

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 8)

Re: Auf geöffneten Dialog prüfen

von Karolus » Mo, 18.04.2011 12:44

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

von keksi1970 » Mo, 18.04.2011 12:17

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

von komma4 » Fr, 15.04.2011 15:19

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.

[Gelöst] Auf geöffneten Dialog prüfen

von keksi1970 » Fr, 15.04.2011 11:26

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

Nach oben