Berichtsfenster lässt sich nicht schließenIch versuche, ein Skript einzurichten, das beim Ausführen eine interaktive GUI öffnet, die so aussieht:

Ich kann die Chargennummer eingeben und die einzige Schaltfläche, die im Moment funktioniert, ist die „CPL-Bildschirm“.Ich klicke darauf und es wird ein Bericht darüber erstellt, ob die Wafer in dieser Charge die Screening-Grenzwerte überschritten haben.Wenn die Daten Fehlercodes oder sehr hohe Werte enthalten, wird dem Bericht ein Schaltflächenfeld hinzugefügt, in dem der Benutzer gefragt wird, ob er möchte, dass diese Werte entfernt und die Überprüfung erneut durchgeführt wird.

Ich habe die Schaltfläche so eingerichtet, dass sie das aktuelle Berichtsfenster und die damit verbundene Datentabelle schließen und denselben „CPL-Bildschirm“ wie am Anfang erneut ausführen soll, nachdem die fehlerhaften Daten entfernt wurden.Das einzige Problem ist, dass, wenn ich auf die Schaltfläche „Erneut ausführen“ klicke, das ursprüngliche Fenster geschlossen wird und der Bericht nicht abgeschlossen wird.
Ich kann physisch in das Skript gehen und den Code hervorheben, der mit der Schaltfläche verbunden ist, und das Skript läuft einwandfrei.Es funktioniert nur nicht, wenn ich tatsächlich auf die Schaltfläche klicke.So sieht die Fensterliste aus, wenn sie zum ersten Mal aufgerufen wird:

So sieht es aus, wenn ich auf die Schaltfläche „Wiederholen“ klicke:

Es scheint, dass der ursprüngliche Bericht nicht geschlossen wird, bevor der neue Bericht geöffnet wird.Ich bin ratlos, wenn ich bedenke, dass ich denselben Code physisch ausführen kann und alles funktioniert.Das Folgende ist ein Suedo-Flussdiagramm, das zeigt, was das Skript tut:

Jede Hilfe wäre sehr dankbar
Betreff: Berichtsfenster schließt nichtDie Schaltfläche und alle ihre Eigenschaften, einschließlich ihres Skripts, sind ein untergeordnetes Element einer Anzeigestruktur. Der Anzeigebaum ist im Fenster enthalten. Wenn Sie das Fenster schließen, werden die Schaltfläche und ihr Skript zerstört. Dies würde einen – möglicherweise sehr schwerwiegenden – Fehler verursachen, wenn es das Schaltflächenskript wäre, das das Fenster geschlossen hat. Daher achtet JMP darauf und stellt sicher, dass das Fenster ausgeblendet ist, aber wartet, bis das Schaltflächenskript abgeschlossen ist.
Hier ist ein Skript, um dieses Verhalten zu demonstrieren. Sehen Sie sich die Fensterliste in Ihrem Startfenster an, um Folgendes zu sehen:
win1 = New Window( "Window 1",
V List Box(
Button Box( "Close window 1 and open window 2",
win1 << close window;
win2 = New Window( "Window 2",
<<MODAL></MODAL>
Betreff: Berichtsfenster schließt nichtIch habe herausgefunden, dass das Fenster, in dem sich die Schaltfläche befand, nicht vollständig geschlossen wird, wenn man im Berichtsfenster eine Schaltfläche einfügt, die das Fenster schließt und mit weiterem Skript fortfährt. Wenn Sie jedoch außerhalb des Berichtsfensters eine Schaltfläche platzieren, die genau das gleiche Skript ausführt, funktioniert alles einwandfrei. Ich bin mir nicht ganz sicher, warum das so ist, und ich musste mein Skript zum Ausgleich ein wenig ändern, aber am Ende funktioniert es jetzt einwandfrei.Betreff: Berichtsfenster schließt nichtDer Code zum Hinzufügen der Schaltfläche zum Berichtsfenster lautet folgendermaßen:
if(errors_exist == 1 | large_value == 1,
error_box << append(Button box("Remove Erroneous Data and Rerun Analysis",redo_analysis))
)
Der Code für redo_analysis lautet wie folgt:
redo_analysis = expr(//if the user wants to eliminate error codes or large data values need to redo the screening and remove the issue points
close(dt_screen_results, nosave);
re_run = 1; //boolean flip to not have the script pull data from the database again
screen_result_window << close window;
//wait(5);
column(dt_lot, "Screen Results") << set selected(1);
dt_lot << delete columns();
if(errors_exist == 1, //deletes the error code rows
dt_lot << selectrows(error_rows)
);
if(large_value == 1,//deletes the large value rows
dt_lot << selectrows(large_values)
);
dt_lot << delete rows()
CPL_screen
//window(char(lot_num << get text) || " CPL Results Summary") << close window;
);
Wenn ich im Bericht auf die Schaltfläche drücke, bleibt das Problem bestehen. Wenn ich den Knopf nicht drücke, sondern redo_analysis im Skript hervorhebe und diesen Teil ausführe, funktioniert alles einwandfrei.
Betreff: Berichtsfenster schließt nichtDurch das Öffnen eines Fensters in JMP wird die Verarbeitung Ihres Skripts nicht automatisch gestoppt.Man muss das Fenster entweder als „modales“ Fenster deklarieren oder den auszuführenden Code in die Objekte innerhalb des Fensters einbetten, sodass sie erst ausgeführt werden, wenn ein Benutzer auf eine Schaltfläche klickt oder in einem Kombinationsfeld eine Auswahl trifft. usw.
Ich vermute also, dass Ihr JMP-Code die Verarbeitung fortsetzt, während Ihr Fenster geöffnet ist, und Sie denken, dass die Verarbeitung auf die Benutzereingabe wartet, bevor sie fortfährt.
Betreff: Berichtsfenster schließt nichtNach mehr Fummelei scheint es, dass das Skript nicht in der Reihenfolge ausgeführt wird, in der ich es mir vorgestellt hatte. Ich dachte, das Skript würde die Dinge der Reihe nach ausführen, so wie es in Zeile 10 ausgeführt wird und dann mit Zeile 11 fortfährt und diese ausführt. Ich habe festgestellt, dass das Skript diese Zeile erst vollständig ausführt, wenn die Zeile „report << close window()“ in einer Zeile am Anfang des Wiederholungsabschnitts steht. Das Fenster wird ausgeblendet, aber nicht vollständig geschlossen, bis das neue Fenster geöffnet wird. Da ich einen < Irgendwelche Ideen, warum JMP dies tut und was ich tun kann, um es zu mildern? Ich habe vergessen zu erwähnen, dass ich JMP 12 verwende.