從列錶框中取得選定項 - JSL 的行為發生了改變?目前正在觀看@David_Burnham 製作的關於如何編寫 JSL 腳本的精彩教學影片。
直到 7 分 28 秒,一切運作正常。大約從 8 分 13 秒開始,也就是視窗轉換為模態視窗的那一刻,這段程式碼拋出了一個錯誤:
// doesn't work:
lst = {"A", "B", "C"};
New Window("Select", << Modal,
Border Box(top(10), bottom(10), left(15), right(10),
V List Box(
TextBox("Select the predictor variable", <
<SETFONTSTYLE></SETFONTSTYLE>
<BR /> <P>我找到了一個解決方案: <A href="https://community.jmp.com/t5/Discussions/How-to-get-specific-input-values-from-modal-windows-to-be-placed/m-p/483379#U483379" class="lia-mention-container-editor-message lia-img-icon-forum-thread lia-fa-icon lia-fa-forum lia-fa-thread lia-fa" target="_blank">如何從模態視窗取得特定的輸入值並將其放入 JMP 腳本中儲存。</A>至少,當我執行以下腳本並按下模態視窗的「確定」按鈕時, <FONT face="courier new,courier" color="#0000FF">sel 函數</FONT>會傳回包含所選值的清單。</P> <P><U><STRONG>腳本</STRONG></U>:</P> <BR />
<CODE class=" language-jsl">// works
NewWindow("Select", <
<MODAL>
<CODE class=" language-jsl"> <BR /> <P><U><STRONG>範例輸出</STRONG></U>:</P> <CODE class=" language-jsl">sel = {"A", "B"};
{Button( 1 )} // what is this? 我想了解三件事:
- 我貼在最上面的原始程式碼有問題嗎(// 不起作用)?還是 JSL 自錄影以來行為發生了變化?
- 傳回值{按鈕( 1 )} ,我不明白它是什麼。它為什麼會出現在這裡?我猜測它來自ButtonBox() 函數,但腳本索引沒有提供相關資訊。
- 我的自訂按鈕方案是否正確?
編輯:
教學影片裡甚至還有解決方案。
lst = {"A", "B", "C"};
NewWindow("Select", <
<MODAL></MODAL>
回覆:從列錶框中取得選定項目 - JSL 的行為是否改變了?1. 模態視窗關閉後,除非使用 << 傳回結果,否則您將無法再存取這些值。
2. Button(1) 表示「確定」按鈕已被按下,例如,您可以使用它來控制腳本的流程。
3. 是的,按下「確定」按鈕時取得數值是個不錯的選擇。
我通常先嘗試使用 << 返回結果,如果它不適用於當前窗口,那麼我會在按下“確定”按鈕時獲取值。即使並非必要,我幾乎總是會在使用模態對話框時添加“確定”和“取消”按鈕。 (請參閱腳本指南 > 顯示樹 > JSL 中的模態視窗 > 建立模態視窗。)
以下是使用 << 傳回結果 的範例
Names Default To Here(1);
lst = {"A", "B", "C"};
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE>
<P>還有一種情況是它可能無法按預期工作(我想要添加到列錶框中的項目,而不是選定的項目)。</P> <BR /> <BR /> <CODE class=" language-jsl">Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE> <BR /> <BR />
回覆:從列錶框中取得選定項目 - JSL 的行為是否改變了?謝謝——一如既往,非常感謝!令人費解的是,這裡出現問題的地方,在我最初帖子中鏈接的視頻裡卻能正常運行。
回覆:從列錶框中取得選定項目 - JSL 的行為是否改變了?可能與舊版的 JMP 以及某些時序問題有關。