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:是否有其他方法可以將新值傳輸到文本框? 我試圖將代碼轉換為使用“設置功能”消息,但這並不能解決問題。
我觀察到,如果右鍵單擊平台中的滑塊(例如Custom Profiler)並設置“值”,則平台似乎可以正確響應(滑塊和關聯的“文本編輯框”均按預期移動),因此我可以確定在JSL中做到這一點。 我只是不知道那是什麼。
我在Mac上運行15.2.1 Pro。
麥可
腳本編寫回复:JSL:滑塊框設置值感謝您提供明確的示例和問題。 可以輕鬆地驗證這是否是JMP 15中的錯誤(也許是早期版本)。 滑塊的回調未在“設置值”上觸發。
我還驗證了我們已在即將發布的JMP 16版本中修復了該問題。
您可以在JSL中編寫代碼,這可能是一個棘手的解決方法,但是您看到它在內置平台中工作時,並不是通過JSL完成的。
回复: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:滑塊框設置值這不能解決您確定腳本未觸發的根本問題,但是我經常在該值旁邊放置一個數字編輯框,並使用腳本來設置滑塊的值。這樣,如果有人要設置值,他們不太可能右鍵單擊滑塊,因為單擊文本編輯框會更容易。這是同時包含這兩種方法的一種方法,同時還可以在滑塊移動或鍵入新值時運行某些功能:

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:滑塊框設置值您也可以使用這種方法組合和連接號碼編輯框和滑塊框