DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Dialogbox schließt nicht mit OK Knopf

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

0 Kudos
Message 1 of 7
(5,214 Views)

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

0 Kudos
Message 2 of 7
(5,193 Views)

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

0 Kudos
Message 3 of 7
(5,192 Views)

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

0 Kudos
Message 4 of 7
(5,187 Views)

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?  
0 Kudos
Message 5 of 7
(5,170 Views)

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

 

 

0 Kudos
Message 6 of 7
(4,817 Views)

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

 

 

 

0 Kudos
Message 7 of 7
(4,797 Views)