選択ウィンドウを閉じると JMP が遅くなるこんにちは、
スクリプトの開始時に開くウィンドウから、スクリプトの残りの部分で使用するオブジェクトを定義するグループを選択するようユーザーに促そうとしています。ユーザーがボタン ボックスを選択して使用すると、うまく機能しますが、ウィンドウを閉じると、JMP の速度が低下し、右クリック > [スクリプトの停止] を選択しないとスクリプト ウィンドウを編集できなくなります。ここで何が欠けているのか、誰かご存知ですか?
Names Default to Here (1);
groupsel=Expr(
done = 0;//Track if selection made
nwcurr = New Window("Select Group",
V List Box(
Text Box("Please select a group:"),
rb = Radio Box({"A", "B", "C"}),
Button Box("OK",
// Set the selected currency based on the user's choice
group = rb << Get Selected;
nwcurr << Close Window; // Close the modal window after selection
done = 1; // Mark the selection as done
)
)
);
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
// Wait loop until the selection is made
Wait(0.1); // Small wait to reduce CPU usage
while(done == 0, Wait(0.1)); // Loop until 'done' is set to 1
);
Eval(groupsel);自動化とスクリプトRe: 選択ウィンドウを閉じると JMP が遅くなるウィンドウが閉じられたばかりの場合、変数「done」は常に 0 になるため、While ループ内に留まります。
Re: 選択ウィンドウを閉じると JMP が遅くなるこれはモーダル ウィンドウを使用するのに適したタイミングかもしれません。「done」変数は必要ありません。
Names Default To Here( 1 );
groupsel = Expr(
nwcurr = New Window( "Select Group",
<<MODAL></MODAL>
Re: 選択ウィンドウを閉じると JMP が遅くなるまたは、モーダルウィンドウを使用しない他のオプションとして、実行したいアクションを、OKが押されたときに実行される独自の関数/式に移動することもできます。
Names Default To Here(1);
expr_actions = Expr(
group = rb << Get Selected;
show(group);
);
groupsel = Expr(
nwcurr = New Window("Select Group",
V List Box(
Text Box("Please select a group:"),
rb = Radio Box({"A", "B", "C"}),
Button Box("OK",
expr_actions;
nwcurr << Close Window;
)
)
);
);
Eval(groupsel);
モーダルは簡単ですが、ユースケースによってはユーザー エクスペリエンスが悪くなります (少なくとも私の意見では)。
Re: 選択ウィンドウを閉じると JMP が遅くなる以前の提案のいずれかを使用します。モーダル ソリューションの作成に役立つ例については、 「モーダル ダイアログ」を参照してください。
表示される動作の一部は、次のコードが原因です:
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
OnClose 式は 0 または 1 に評価される必要があります。0 (false) はウィンドウを閉じることができないことを意味し、1 (true) はウィンドウを閉じることを許可することを意味します。throw で何が起こるかはわかりませんが、おそらく何も良いことは起こらず、値は返されません。stop() は JMP では認識されません。これは余分な未使用のパラメータのようです。ステートメント間にはセミコロンを使用してください。