10-22-2008 07:39 AM
Hallo,
in DIAdem 11.0 werden die im SUD erzeugten Dialogboxen weder mit OK noch mit Cancel geschlossen. Sie verbleiben im Hintergrund. Beim erneuten Aufruf des Dialoges erscheint dann eine neue Dialogbox, welche dann auch im Hintergrund verbleibt.
Woran liegt das? Gibt es bereits eine Lösung dazu?
MfG
Balzi
10-23-2008 09:16 AM
Hallo Balzi,
Der Name des Knopfes hat keine Auswirkung-- ob ein Knopf wie ein OK oder Cancel Knopf agiert, das haengt von der Eigenschaft "ButtonType" ab. Per default werden alle neue Button-Kontrolle als Typ "EventClick" erstellt. Der Knopf wird sich wie ein OK Knopf nur dann verhalten, wenn die "ButtonType" Eigenschaft auf "OK" gesetzt wird. Der Knopf wird sich wiederum wie ein Cancel Knopf nur dann verhalten, wenn die "ButtonType" Eigenschaft auf "Cancel" gesetzt wird.
Brad Turpin
DIAdem Product Support Engineer
National Instruments
10-23-2008 09:18 AM
Hallo Balzi,
Es gibt eine andere Moeglichkeit. In DIAdem 11.0 gibt es zum ersten mal "nicht-modale" SUDialoge. Wie rufen Sie Ihr Dialog auf, mit welchen Befehlen?
Brad Turpin
DIAdem Product Support Engineer
National Instruments
10-23-2008 10:25 AM
Hallo Brad,
der Dialog wird aus dem Script mittels Befehl Call SudDlgShow("Startbild") geöffnet.
Die Knöpfe sind als OK-Knöpfe definiert. Zusätzlich habe ich im Ereignis festgelegt, dass der Dialog mit dem Befehl Dialog.OK wieder geschlossen wird und dann der zweite Dialog DLG2 aufgerufen wird.
Das Ergebniss ist, dass alle Dialoge geöffnet bleiben und sich immer wieder ein zusätzlicher Dialog öffnet.
Das o.a. Prinzip hat bisher bis zu DIAdem 10.2 immer funktioniert, d.h. die Dialoge wurden immer geschlossen.
Siehe Beispiel im Dateianhang.
Gruß
Balzi
10-24-2008 01:52 AM
Hallo Balzi!
Wenn ich mir deinen Code so anschaue muss ich sagen das ich das Verhalten von DIAdem 11 für richtig halte! Nach meiner Anisicht dürfen in einer Ereignisroutine keine weiteren Ereignisse ausgelöst werden, was aber beim Schließen des Dialoges passieren würde. In 11 wird das anscheinend nun beherzigt. Das dies in 10 anders war kann sein, konnte ich aber nicht testen da mit 11 leider wieder einmal ein inkompatibles Dateiformat 'erfunden' wurde.
Meine Empfehlung wäre, wenn du den Zwischendialog geschlossen haben willst, im Basisdialog die Rückgabe des Dialoges über 'DlgState' abzufragen und dann bei 'IDOK' den anderen Dialog zu öffnen.
Matthias
Matthias Alleweldt Project Engineer / Projektingenieur | Twigeater? |
04-17-2009 06:53 AM
Hallo Twigeater,
ich Test gerade für einen geplanten Umstieg von Diadem 10.2 auf 11.1.
Bis 10.2 war folgendes innerhalb eines sud-Dialogs kein Problem:
Dialog.Cancel
ScriptStart("Messen.vbs")
Messen.vbs wurde gestartet und der Dialog beendet. Aus dem MessSkript wurde dann entsprechend des Nutzers ein entsprechender neuer Dialog nach der Messung gestartet.
Jetzt werden die Dialoge nicht mehr beendet und bleiben immer im Vordergrund. Gibt es keinen Workaround, der es ermöglicht ohne umstrukturierung auszukommen?
Danke
Diademi
04-20-2009 02:52 AM
Hallo diademi,
Die Ursache liegt in der Beseitigung eines möglichen Fehlverhaltens in SUD.
Auszug aus den Release Notes:
Beim Aufruf von Dialog.Cancel und Dialog.OK aus einem SUD-Script heraus konnte es zum Absturz von DIAdem kommen, wenn nach der Ausführung dieser Befehle auf SUD-Steuerelemente zugegriffen wurde. Die Ausführung der Befehle findet jetzt immer nach Abarbeitung aller anstehenden Dialog-Ereignisse statt.
Da der Dialog in deiner Applikation nach der Auswahl über den Button auch beendet wird scheint mir die prinzipielle Vorgehensweise aus dem angehängten Beispiel die richtige Lösung zu sein. Die nötige Umbauarbeiten sind wahrscheinlich nicht zu groß.
Gruß
Walter