延遲腳本執行直到提供用戶輸入?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我的腳本的第一部分提示用戶選擇“Y”和“By”變量。然後它輸出一個數據表(我們稱之為“dt2”)。
代碼的後半部分依賴於用戶做出選擇並單擊“確定”後生成的數據表 (dt2)。
我遇到的問題是,一旦窗口出現並等待用戶輸入,代碼就會繼續運行......所以代碼的第二半沒有數據表(dt2)可供使用,因此它不會輸出任何內容. ..... 。
我看到我可以使用wait( ),但這依賴於時間值(以秒為單位),我想編寫這個腳本,這樣它就不會繼續,直到在代碼的前半部分給出用戶輸入(從而生成必要的要執行的代碼後半部分的數據表)。
預先感謝您的任何幫助/建議!
回复:延遲腳本執行直到提供用戶輸入?有幾種方法可以控制非模式窗口行為:
1. 將您希望“確定”按鈕完成的任務放入代碼前面的表達式中。然後,當用戶單擊“確定”時,只需提供表達式即可。
好的表達式=表達式(
用戶輸入=用戶_teb <<獲取文本() ;
打印( “用戶輸入” ||用戶輸入) ;
邁溫<<關閉窗口;
) ;
用戶輸入= ”” ;
邁溫=新窗戶( “獲取用戶輸入” ,
列錶框(
文本框( “輸入一些文字:” ) ,
用戶_teb =文本編輯框() ,
) ,
按鈕盒( “好的” ,好的表達式) ,
按鈕盒( “取消” ,邁溫<<關閉窗口; ) ,
) ;
2. 將 OK 任務放入單獨的 JSL 文件中,並使用 include() 語句運行所需的命令:
// ok_commands.jsl
用戶輸入=用戶_teb <<獲取文本() ;
打印( “用戶輸入” ||用戶輸入) ;
邁溫<<關閉窗口;
// 這是對話框命令,i不存在單獨的文件
用戶輸入= ”” ;
邁溫=新窗戶( “獲取用戶輸入” ,
列錶框(
文本框( “輸入一些文字:” ) ,
用戶_teb =文本編輯框() ,
) ,
按鈕盒( “好的” ,包括( “ok_commands.jsl” );) ,
按鈕盒( “取消” ,邁溫<<關閉窗口; ) ,
) ;
回复:延遲腳本執行直到提供用戶輸入?如果要粘貼的數據來自 JMP 內部,或者可以由 JMP 作為表打開,則也可以編寫插入數據表的腳本。
但對於您的場景,如果由於必須做出一些主觀決定而不可避免地需要手動交互,那麼我將使用帶有“開始”和“完成”(或類似)按鈕的非模式窗口來完成1 和1 中的操作分別為2。
回复:延遲腳本執行直到提供用戶輸入?感謝您的回复。
事實上,這對於我遇到的另一個問題非常有用,我打算
嘗試從用戶那裡獲取數據的解決方案來解決它。
在這種特殊情況下,用戶很可能必須插入很多
數據,想法是他應該將其粘貼到 DT 中。
目前我的解決方案分兩部分運行腳本:
1. 提示用戶插入數據之前所需執行的所有操作
(數據粘貼到DT中)
2. 插入數據後所需的所有操作。
但我們都明白這是行不通的,我也不能要求用戶
手動插入所有數據既耗時又低效。
你還有其他建議嗎?
謝謝,
米沙
回复:延遲腳本執行直到提供用戶輸入?我不認為你可以繞過模式對話框。 但是您可以讓用戶在模式窗口中輸入限制,單擊“確定”時這些限制將傳輸到數據表。
這是一個例子:
dt =新表( “測試” ,新專欄( “數據” ,數字) ) ;
新窗戶( “設定限制” ,
<<莫代爾,
桌盒(字符串列框( ”” , { “平均” , “拼箱” , “倫敦大學學院” } ) , NCB =編號列編輯框( “限制” , [ 。 , 。 , 。 ] ) ) ,
按鈕盒( “好的” ,
L = NCB <<得到;
評估(
求值表達式(
柱子( dt , “數據” ) <<設置屬性( 《控制限度》 , { Xbar (平均(表達式( L [ 1 ] ) ) ,拼箱(表達式( L [ 2 ] ) ) ,倫敦大學學院(表達式( L [ 3 ] )) )})))
)
) ;
// 檢查是否有效
展示( L ) ;
dt :數據<<獲取財產( 《控制限度》 ) ;
回复:延遲腳本執行直到提供用戶輸入?我正在做類似的事情並且遇到同樣的問題。
模態窗口也是我最初的解決方案。 不幸的是它不起作用。
當新窗口打開時,它會阻止訪問數據表(它保留在頂部):

有沒有辦法繞過模式窗口的頂部默認設置?
或者更好的實施想法?
提前謝謝。
回复:延遲腳本執行直到提供用戶輸入?如果您使用新窗口來收集用戶輸入,請將其設為模式對話框<< 模態
邁溫=新窗戶( “模態對話框示例” , <<莫代爾,
文本框( “這是一個模式對話框” ) ,
按鈕盒( “好的” ,哪個按鈕= “好的” ) ,
按鈕盒( “取消” ,哪個按鈕= “取消” ) ,
) ;
打印( “用戶點擊了” ||哪個按鈕) ;