Problema
Desideri utilizzare una casella di scorrimento per impostare un valore continuo e desideri visualizzare il valore corrente mentre sposti il dispositivo di scorrimento.
Soluzione
Crea una casella di scorrimento e una casella di modifica del numero. Aggiungi uno script alla casella di scorrimento per aggiornare la casella di modifica del numero. Aggiungi uno script alla casella di modifica numero per aggiornare la casella di scorrimento.
Eggs = 50;
Bacon = 50;
New Window( "Slider Display",
Border Box( Left( 10 ), Right( 10 ), top( 10 ), bottom( 10 ),
V List Box(
H List Box(
Text Box( "Eggs" ), // slider label
eggssb = Slider Box( 0, 100, Eggs, // slider script follows...
eggsnb << set( Eggs ); // update the value
// this example doesn't need any other interactive
// update. You could do some other work here, using
// the slider's value to change a graph, perhaps.
),
// text box to hold the slider's value...
eggsnb = Number Edit Box( Eggs, <<SETFUNCTION></SETFUNCTION>
Window with Slider and Edit boxes launches 2nd windowWindow with Slider and Edit boxes launches 2nd windowLa finestra con il cursore e le caselle di modifica avvia la seconda finestra
Discussione
La casella di scorrimento e la casella di modifica del numero hanno comportamenti diversi. La casella di scorrimento mantiene la variabile (Uova, ad esempio) e aggiorna quella variabile quando lo slider si sposta. Lo script di callback del dispositivo di scorrimento può utilizzare direttamente la variabile. La casella di modifica numero non mantiene la variabile e non la aggiorna. La funzione di callback per la modifica del numero delle uova utilizza <<
Potresti apportare una variazione leggermente più semplice utilizzando TextBox anziché NumberEditBox, ma probabilmente vorrai inserire un valore esatto, cosa difficile con un cursore.
Guarda anche
http://www.jmp.com/support/help/Display_Boxes.shtml
Guida->Libri->Riferimento sintassi JSL
Puoi fare in modo che uno Slider Box fornisca un output intero arrotondandolo nello script dello Slider Box:
Names Default To Here( 1 );
sliderValue = .6;
New Window("Slider", v list box(
text box("Slider box with integer output."),
slider box(
0,
10,
sliderValue,
sliderValue = round(sliderValue);
tb << Set Text( char( sliderValue ) )
),
tb = text box("")
));Grazie!
Devi aggiungere
gb<<INVAL></INVAL>
nelle due funzioni di callback (per le caselle di modifica del numero di uova e bacon) per notificare al GraphBox di ridisegnarsi. < invalidare e attiva un ridisegno. Nel modo in cui hai scritto la casella del grafico, raccoglierà i dati modificati quando verrà ridisegnata.
Ciao Craig
Grazie per ogni post fantastico!
Ho modificato leggermente il tuo script per illustrare un problema che sto riscontrando:
Eggs = 50;
Bacon = 50;
New Window( "Slider Display",
Border Box( Left( 10 ), Right( 10 ), top( 10 ), bottom( 10 ),
V List Box(
H List Box(
Text Box( "Eggs" ), // slider label
eggssb = Slider Box(
0,
100,
Eggs,
gb << Set Graphics Script( Marker( {Bacon, Eggs} ) );// slider script follows...
eggsnb << set( Eggs ); // update the value
// this example doesn't need any other interactive
// update. You could do some other work here, using
// the slider's value to change a graph, perhaps.
),
// text box to hold the slider's value...
eggsnb = Number Edit Box(
Eggs,
<<SETFUNCTION></SETFUNCTION>Il mio problema è che il grafico non si aggiorna quando inserisco un numero nella casella di modifica numero. Il cursore si sposta quando premo "Invio", ma il grafico non riflette il cambiamento. Ho provato alcune cose, ma non riesco a capire come risolverlo.
Spero che tu possa aiutare?
BR
Jesper