全部,
我想知道是否有辦法讓數據過濾器成為文本編輯框或數字編輯框,而不是默認的列表類型顯示或滑塊視圖。
dt = Open( "$SAMPLE_DATA/Time Series/Raleigh Temps.jmp" );
// Traditional Slider View
dt << Graph Builder(
Size( 814, 714 ),
Variables(
X( :Name( "Month/Year" ) ),
Y( :Temperature ),
Y( :Predicted Temperature, Position( 1 ) )
),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 23 ) ) ),
Local Data Filter( Conditional, Add Filter( columns( :Month Number ), Display( :Container, Size( 160, 225 ), List Display )) )
);上面的代碼產生了這個:(滑塊視圖)

相反,通過將列重塑為序數數據,我可以為數據過濾器生成 LIst 顯示
Col = Column(dt,"Month Number");
Col << Set Modeling Type("Ordinal");
dt << Graph Builder(
Size( 814, 714 ),
Variables(
X( :Name( "Month/Year" ) ),
Y( :Temperature ),
Y( :Predicted Temperature, Position( 1 ) )
),
Elements( Line( X, Y( 1 ), Y( 2 ), Legend( 23 ) ) ),
Local Data Filter( Conditional, Add Filter( columns( :Month Number ), Display( :Container, Size( 160, 225 ), List Display )) )
);上面的代碼生成這個:

相反,我希望將數據過濾器顯示為文本編輯框/數字編輯框。 我記得有一次沿著這條路走下去,但不記得結果了 - 如果有人能解決它 - 請分享。
最好的
烏代
有趣的是,“讓事情簡單化”的心態正是我會考慮編碼這個。對於了解數字條目的經驗豐富的 JSL 用戶,並且已經學會在降低下限之前不要降低上限,並且知道 Show、Include 和 Inverse 的含義,簡單的代碼可能更好。為了最好的用戶但是,根據經驗,如果他們一次只想從一長串可能的日期中查看一個數據點,那麼沒有比在其中輸入日期的描述良好的框更簡單的了。
GUI 應該很難解釋,因為您以前從未考慮過它,而不是因為它需要按特定順序執行特定步驟。
當然,這可能與烏代手頭的問題無關。
我喜歡保持簡單。 您引用的“滑塊視圖”顯示當前過濾器的上限和下限。 您不必使用滑塊來更改範圍。 您也可以單擊當前值(數字)並輸入一個新值。 這樣您就可以使用數據過濾器對象(簡單)並避免可能不會真正添加新功能的額外編碼。
您知道嗎,您還可以單擊數據過濾器中的任一當前限制並輸入一個新限制?
這是一種方法。我不確定是否可以使用輸入格式(如數據表單元格)讀取文本編輯框值,但我喜歡正則表達式的靈活性:

Names default to here( 1 );
dt = Open( "$SAMPLE_DATA/Time Series/Raleigh Temps.jmp" );
New window(
"Graph with filter",
Data filter context box(
H list box(
V list box(
Text Box( "Enter month and year (mm/yyyy):"),
Text Edit Box( "01/1980",
<<SETFUNCTION></SETFUNCTION>
編輯:忘了截圖。
當數字編輯框中的值發生變化時,您可以自己在數據過濾器中設置 where 子句,並隱藏正常的用戶界面:

Names default to here( 1 );
dt = Open( "$SAMPLE_DATA/Time Series/Raleigh Temps.jmp" );
New window(
"Graph with filter",
Data filter context box(
H list box(
V list box(
Text Box( "Enter month:"),
Number Edit Box( 1,
<<SETFUNCTION></SETFUNCTION>