JSL:滑块框设置值大家好,
以下是脚本索引中用于创建滑块框的代码:
Names Default To Here( 1 );
sliderValue = .6;
New Window( "Example",
Panel Box( "Slider Box",
tb = Text Box( "Value: " || Char( sliderValue ) ),
sb = Slider Box(
0,
1,
sliderValue,
tb << Set Text( "Value: " || Char( sliderValue ) )
)
)
);
如果运行此示例,您可以右键单击滑块来设置特定值:

假设我将其设置为 0.8。 如果这样做,滑块会移动,但与滑块关联的脚本无法执行。 也就是说,滑块上方的文本框不会更新。
问题1:为什么?
问题 2:是否有其他方法将新值传输到文本框? 我尝试将代码转换为使用“设置函数”消息,但这并没有解决问题。
我观察到,如果您右键单击平台中的滑块(例如自定义分析器)并设置值,平台似乎会正确响应(滑块和关联的文本编辑框都按预期移动),所以我可以告诉您有某种方法在 JSL 中执行此操作。 我只是不知道那是什么。
我在 Mac 上运行 15.2.1 Pro。
迈克尔
自动化和脚本编写回复:JSL:滑块框设置值是的,我确实创建了愿望清单项目。组合并连接的数字编辑框和滑块框
回复:JSL:滑块框设置值谢谢。 我了解数字编辑框方法,现在倾向于采用这种方法。 链接的线程来自@MathStatChem听起来像是一个愿望清单项目,可以创建一种新类型的显示框,或者向滑块添加一些选项,可以选择添加 NEB 控件。 我假设愿望清单项目已经创建。
回复:JSL:滑块框设置值您也可以使用这种方法组合并连接的数字编辑框和滑块框
回复:JSL:滑块框设置值这并不能解决您发现的脚本未触发的根本问题,但我经常在该值旁边放置一个数字编辑框,并使用脚本来设置滑块的值。这样,如果有人想要设置值,他们不太可能右键单击滑块,因为只需单击文本编辑框更容易。这是一种包含两者的方法,同时在滑块移动或输入新值时运行一些函数:

Names Default To Here( 1 );
sliderValue = .6;
//Function that is called when either slider is moved or new value is typed in
dothisonchange = Function({val}, tb << Set Text( "Value: " || Char( val) ) );
New Window( "Example",
Panel Box( "Slider Box",
tb = Text Box( "Value: " || Char( sliderValue ) ),
h list box(
sb = Slider Box(
0,
1,
sliderValue,
//Set the number edit box and call the other function
neb << Set( sliderValue );
dothisonchange(sliderValue);
),
neb = Number Edit Box(
sliderValue,
3,
<< Set function( Function( {this},
sliderValue = this << Get;
//Set the slider and call the other function
sb << Set( sliderValue );
dothisonchange(sliderValue);
) )
)
)
)
);回复:JSL:滑块框设置值我没有看到解决方法,因为无法将表达式与“设置值”操作关联起来。 这是原始脚本的变体,但它也不起作用,因为它是在移动滑块时调用的。
Names Default To Here( 1 );
sliderValue = .6;
New Window( "Example",
Panel Box( "Slider Box",
tb = Text Box( "Value: " || Char( sliderValue ) ),
Slider Box( 0, 1, sliderValue,
<< Set Function(
Function( { me },
tb << Set Text( "Value: " || Char( me << Get ) )
)
)
)
)
);回复:JSL:滑块框设置值感谢您提供清晰的示例和问题。 它可以轻松验证这是 JMP 15(可能是早期版本)中的错误。 设置值不会触发滑块的回调。
我还确认我们已在即将发布的 JMP 16 版本中修复了该问题。
您可能有一个棘手的解决方法可以在 JSL 中进行编码,但是您看到它在内置平台中工作,但它并不是通过 JSL 完成的。