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 完成的。