全部,
我想知道是否有办法让数据过滤器成为文本编辑框或数字编辑框,而不是默认的列表类型显示或滑块视图。
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>