JSL: valore di impostazione della casella di scorrimentoCiao a tutti,
Ecco il codice dall'indice di scripting per la creazione di una casella di scorrimento:
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 ) )
)
)
);
Se esegui questo esempio, puoi fare clic con il pulsante destro del mouse sul dispositivo di scorrimento per impostare un valore specifico:

Supponiamo che lo imposti a 0,8. Se lo faccio, il cursore si sposta, ma lo script associato al cursore non viene eseguito. Cioè, la casella di testo sopra il cursore non si aggiorna.
Domanda 1: perché?
Domanda 2: esiste un modo diverso per trasferire il nuovo valore nella casella di testo? Ho provato a convertire il codice per utilizzare il messaggio Set Function ma questo non lo ha risolto.
Ho osservato che se fai clic con il pulsante destro del mouse su un dispositivo di scorrimento in una piattaforma (come Custom Profiler) e Imposta valore, la piattaforma sembra rispondere correttamente (il cursore e la casella di modifica del testo associata si muovono entrambi come previsto), quindi posso dire che c'è un modo per farlo in JSL. Non so cosa sia.
Uso 15.2.1 Pro su un Mac.
Michael
ScriptingRi: JSL: valore di impostazione della casella di scorrimentoGrazie per aver fornito un chiaro esempio e una domanda. Ha reso facile verificare che si tratta di un bug in JMP 15 (forse nelle versioni precedenti). La richiamata per il dispositivo di scorrimento non viene attivata sul valore impostato.
Ho anche verificato di averlo risolto nella prossima versione di JMP 16.
Potrebbe esserci una soluzione alternativa complicata che potresti codificare in JSL, ma dove vedi che funziona nelle piattaforme integrate non viene eseguita tramite JSL.
Ri: JSL: valore di impostazione della casella di scorrimentoNon vedo una soluzione alternativa perché non è possibile associare un'espressione all'azione Imposta valore. Ecco una variazione dello script originale, ma non funziona neanche perché viene chiamata quando il cursore viene spostato.
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 ) )
)
)
)
)
);Ri: JSL: valore di impostazione della casella di scorrimentoQuesto non risolve il problema sottostante che hai identificato con lo script che non si attiva, ma spesso metto una casella di modifica del numero accanto a quel valore con uno script per impostare il valore del dispositivo di scorrimento.In questo modo, se qualcuno desidera impostare il valore, è improbabile che faccia clic con il pulsante destro del mouse sul dispositivo di scorrimento poiché è più semplice fare clic sulla casella di modifica del testo.Ecco un modo per includerli entrambi, eseguendo anche alcune funzioni quando il cursore si sposta o viene digitato un nuovo valore:

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);
) )
)
)
)
);Ri: JSL: valore di impostazione della casella di scorrimentoPuoi anche usare questo approccio Casella di modifica numeri combinati e collegati e casella di scorrimento