レポートウィンドウが閉じない実行すると次のような対話型 GUI がポップアップ表示されるように設定しようとしているスクリプトがあります。

ロット番号を入力できますが、現時点で機能する唯一のボタンは「CPL 画面」ボタンです。それをクリックすると、そのロットのウェーハがスクリーニング限界を通過したかどうかのレポートが生成されます。データ内にエラー コードまたは非常に高い値がある場合、ボタン ボックスがレポートに追加され、ユーザーがそれらの値を削除してスクリーニングを再度実行するかどうかを尋ねます。

現在のレポート ウィンドウとそれに関連付けられているデータ テーブルを閉じ、不良データを削除した後、最初に実行したのと同じ「CPL 画面」を再実行するボタンを設定しました。唯一の問題は、再実行ボタンをクリックすると元のウィンドウが閉じてレポートが終了しないことです。
スクリプトに物理的にアクセスして、ボタンに接続されているコードを強調表示すると、スクリプトは正常に実行されます。実際にボタンをクリックした場合のみ機能しません。初めて実行したときのウィンドウ リストは次のようになります。

再実行ボタンをクリックすると次のようになります。

新しいレポートが開く前に元のレポートが閉じていないようです。同じコードを物理的に実行でき、すべてが機能することを考えると困惑しています。以下は、スクリプトの動作を示す suedo のフローチャートです。

助けていただければ幸いです
Re: レポートウィンドウが閉じないボタンとそのスクリプトを含むすべてのプロパティは、表示ツリーの子です。 表示ツリーはウィンドウ内に含まれます。 ウィンドウを閉じると、ボタンとそのスクリプトは破棄されます。 これにより、ウィンドウを閉じたボタン スクリプトの場合、エラー (非常に深刻なエラーとなる可能性があります) が発生します。 したがって、JMP はそれを監視し、ウィンドウが非表示になっていることを確認しますが、ボタン スクリプトが終了するまで待機します。
この動作を示すスクリプトを次に示します。 ホーム ウィンドウのウィンドウ リストを見て確認してください。
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>
Re: レポートウィンドウが閉じないレポート ウィンドウに、そのウィンドウを閉じてさらにスクリプトを続行するボタンを配置すると、そのボタンを含むウィンドウが完全には閉じないことがわかりました。 ただし、まったく同じスクリプトを実行するボタンをレポート ウィンドウの外側に配置すると、すべてが正常に動作します。 その理由は正確にはわかりません。それを補うためにスクリプトを少し変更する必要がありましたが、最終的には正常に動作するようになりました。Re: レポートウィンドウが閉じないレポート ウィンドウにボタンを追加するコードは次のとおりです。
if(errors_exist == 1 | large_value == 1,
error_box << append(Button box("Remove Erroneous Data and Rerun Analysis",redo_analysis))
)
redo_analysis のコードは次のとおりです。
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;
);
レポートのボタンを押しても問題は解決しません。 ボタンを押さずに、スクリプト内の redo_analysis を強調表示してその部分を実行すると、すべてが正常に動作します。
Re: レポートウィンドウが閉じないJMP でウィンドウを開いても、スクリプトの処理は自動的に停止しません。ウィンドウを「モーダル」ウィンドウとして宣言するか、実行するコードをウィンドウ内のオブジェクトに埋め込んで、ユーザーがボタンをクリックするかコンボボックスで選択するまで実行されないようにする必要があります。等
したがって、私の推測では、ウィンドウが開いている間もJMPコードは処理を続行し、処理が続行する前にユーザーの入力を待っていると考えているのではないかと思います。
Re: レポートウィンドウが閉じないさらにいじってみると、スクリプトは私が想定していた順序で実行されていないようです。 10 行目が実行されてから 11 行目に移り、それが実行されるというように、スクリプトは順番に実行されるものと考えていました。 再実行部分の先頭に report << close window() という行があるにもかかわらず、スクリプトは完全に終了するまでその行を完全には実行しないことがわかりました。 ウィンドウは非表示になりますが、新しいウィンドウが開くまで完全には閉じられません。 ヒストグラムを作成するデータ テーブルを閉じるレポート ウィンドウに < JMP がこのようなことをしている理由と、それを軽減するために何ができるかについて何かアイデアはありますか? JMP 12 を実行していることを言い忘れていました。