更改腳本上的數字編輯框我是 JSL 和 Application Builder 的新手,請耐心等待。
我正在嘗試建立一個具有一系列配對數位編輯框的對話框。每對中的一個代表「開始」時間,另一個代表對應的「結束」時間:
我想避免用戶輸入晚於“結束”時間的“開始”時間或早於“開始”時間的“結束”時間的情況。
我的第一個想法是向每個框添加一個“更改時”腳本,對於“開始”框來說是這樣的:
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
對於「結束」框來說是這樣的:
If( Start << Get > End << Get,
Start << Set( End << Get )
);
但這不起作用(從某種意義上說,當發生不需要的情況時什麼也不會發生)。
我可能正在做一些很愚蠢的事情,但我們將不勝感激。
回覆:更改腳本上的數位編輯框感謝大家的幫忙!
回覆:更改腳本上的數位編輯框Application Builder 需要一些時間來學習,但這是值得的。我從 JMP 版本 10 起就一直在使用它,並且每個版本都變得更好。我附上了我在 JMP Discovery 2013 JSL 圓桌會議上所做的演示,可能會有所幫助。
回覆:更改腳本上的數位編輯框是的,您可以在文字編輯器中開啟已儲存的應用程式建構器文件,但應用程式建構器 gui 是編輯文件的唯一受支援的方式。 (如果您想了解打開腳本時會發生什麼,仍然值得一看。)
以下是一些網頁資源的連結。
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
[影片]
回覆:更改腳本上的數位編輯框謝謝大家的好建議。 我還沒有全部嘗試過,但一旦我從「真正的」工作中得到休息,我就會嘗試。
同時,我認為我的許多問題的根源是我還沒有找到應用程式產生器(AB)的詳細文件。 它一定存在,但我找不到它。 有人有連結嗎?
例如,我不知道AB的「屬性」選單中的「腳本」欄位是做什麼用的,而且我沒有與數位編輯框(NEB)文件建立聯繫。 顯然,我正在這裡摸索。
我感到困惑的另一個例子是,NEB 的 AB 屬性窗格中存在「增量」輸入字段,但不接受輸入。 我可以繼續…
就像我說的,一些關於 AB 的好的文檔,以及一些複雜模式對話框腳本的優秀範例將會很棒。另外,有沒有辦法實際查看 AB 為介面產生的程式碼?
回覆:更改腳本上的數位編輯框這是例子。使用 JMP 13 創建,因此可能不適用於早期版本。
回覆:更改腳本上的數位編輯框您需要設定腳本來呼叫每個數字編輯框。我創建了一個簡單的例子:
開始時間:開始時間的數位編輯框
結束時間:結束時間的數位編輯框
我右鍵單擊每個數字編輯框並選擇腳本 > 腳本(號碼未更改)。這是我新增的腳本:
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
回覆:更改腳本上的數位編輯框有幾點值得嘗試:
1. 查看日誌視窗 - 儘管似乎沒有發生任何事情,但可能會報告錯誤,這將為您提供線索
2. 將程式碼簡化為盡可能簡單。這將幫助您弄清楚什麼有效,什麼無效。例如,這似乎按照您描述的方式工作:
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
回覆:更改腳本上的數位編輯框您可以透過在 SetFunction(而不是 OnChange)中設定開始和結束 NumberEditBox 的最小/最大值來完成此操作。
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>