關閉後 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);自動化和腳本編寫回覆:關閉選擇視窗後 JMP 減速如果視窗剛剛關閉,您的變數「done」將始終為 0,因此您將陷入 While 循環中。
回覆:關閉選擇視窗後 JMP 減速這可能是使用模態視窗的好時機。您不需要“完成”變數。
Names Default To Here( 1 );
groupsel = Expr(
nwcurr = New Window( "Select Group",
<<MODAL></MODAL>
回覆:關閉選擇視窗後 JMP 減速或者使用模態視窗之外的其他選項,是將您想要執行的操作移動到它們自己的函數/表達式中,按下“確定”時將執行該函數/表達式
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);
模態更容易,但根據用例,它會提供更糟糕的用戶體驗(至少在我看來)。
回覆:關閉選擇視窗後 JMP 減速使用之前的建議之一。請參閱模態對話方塊以取得可能有助於編寫模態解決方案的範例。
您看到的一些行為是由以下程式碼引起的:
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
OnClose 表達式需要計算為 0 或 1; 0(假)表示不允許視窗關閉,1(真)表示允許視窗完成關閉。我不確定投擲會發生什麼,但可能不會有什麼好處;沒有回傳值。 JMP 從未見過 stop();它似乎是一個額外未使用的參數。在語句之間使用分號。