JSL:啟動平台對話框以供用戶輸入,然後修改報告我的頭撞在牆上,必須有一個簡單的方法來做到這一點,但我很茫然。
這是我想要的方案:
1)運行腳本應調出“分發”平台啟動對話框,以便用戶進行選擇
2)單擊“確定”,將句柄返回到結果報告,以便可以對其進行尋址和修改。
通過創建自定義的模態對話框,解析結果並將它們傳遞給Distribution平台,我可以輕鬆地達到相同的結果。但是我要允許用戶運行常規的“分發啟動”對話框。
有任何想法嗎?
回复:JSL:啟動平台對話框以供用戶輸入,然後修改報告約旦,
這是一個腳本示例使用action()進行指導。
還是這個做你想做的 ?
斯坦
回复:JSL:啟動平台對話框以供用戶輸入,然後修改報告喬丹,
運行此命令並滾動到報告底部,以查看它是否滿足您的要求:
Names Default To Here(1);
dt = astable(J(20,1,Random Uniform()));
grabHandle = expr(
distHandle = current report();
doTheRest
);
dt << distribution(action(grabHandle));
doTheRest = expr(
for(i=1, i<=3, i++, distHandle[outlinebox(1)] << append(textbox("Yay!")))
);
注意,由於“ doTheRest”是grabHandle調用的表達式,因此直到用戶單擊“確定”按鈕,它才會運行。否則,這3個附錄將嘗試立即運行;這將導致錯誤,因為distHandle將是未定義的,因為尚未創建分發報告。因此,您將需要使依賴於/分發報表的/下游的任何內容都包含在表達式中,無論Action()函數的參數是什麼表達式,都可以在其中調用它。
謝謝 @stan_koprowski ,用於提及Action()函數... 我不知道它的存在。
乾杯,
布雷迪
回复:JSL:啟動平台對話框以供用戶輸入,然後修改報告謝謝 @brady_brady 這正是我所需要的。無法使Action()正常運行,嵌套表達式可以解決問題。甜!
任何閱讀此線程的開發人員,這難道不容易嗎?希望有一種更乾淨的方法對此進行編碼。
約旦
回复:JSL:啟動平台對話框以供用戶輸入,然後修改報告進行更多操作,似乎甚至不需要嵌套表達式。這也適用:
Names Default To Here( 1 );
dt = As Table( J( 20, 1, Random Uniform() ) );
dt << distribution(
action(
distHandle = Current Report();
For( i = 1, i <= 3, i++,
distHandle[Outline Box( 1 )] << append( Text Box( "Yay!" ) )
);
)
);
我撤回之前的評論,以尋求更好的編碼方式!
讓我感到震驚的是,Action()不像一個模態對話框-它不會停止腳本執行。即使在用戶單擊“確定”之前,分發調用之後的所有代碼也會立即執行。用戶輸入後需要發生的所有事情都必須包裝在Action()參數內。
再次感謝 @brady_brady 和 @stan_koprowski 用於顯示方式。