Problema
Desea utilizar un cuadro deslizante para establecer un valor continuo y desea ver el valor actual a medida que mueve el control deslizante.
Solución
Cree un cuadro deslizante y un cuadro de edición de números. Agregue un script al cuadro deslizante para actualizar el cuadro de edición de números. Agregue un script al cuadro de edición de números para actualizar el cuadro deslizante.
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 ventana con control deslizante y cuadros de edición abre la segunda ventana
Discusión
Slider Box y Number Edit Box tienen diferentes comportamientos. El cuadro deslizante mantiene la variable (Huevos, por ejemplo) y actualiza esa variable cuando se mueve el control deslizante. El script de devolución de llamada del control deslizante puede usar la variable directamente. El cuadro de edición de números no conserva la variable y no la actualiza. La función de devolución de llamada para la edición del número de huevos utiliza <<
Podrías hacer una variación un poco más simple usando TextBox en lugar de NumberEditBox, pero probablemente querrás ingresar un valor exacto, lo cual es difícil con un control deslizante.
Ver también
http://www.jmp.com/support/help/Display_Boxes.shtml
Ayuda->Libros->Referencia de sintaxis JSL
Puede obtener un cuadro deslizante para dar un resultado entero redondeándolo en el script del cuadro deslizante:
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("")
));¡Gracias!
Necesitas agregar
gb<<INVAL></INVAL>
en las dos funciones de devolución de llamada (para los cuadros de edición de número de huevos y tocino) para notificar a GraphBox que se vuelva a dibujar. < invalidar y desencadena un redibujado. De la forma en que ha escrito el cuadro del gráfico, recogerá los datos modificados cuando se vuelva a dibujar.
hola craig
¡Gracias por una gran publicación!
Modifiqué ligeramente su secuencia de comandos para ilustrar un problema que tengo:
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>Mi problema es que el gráfico no se actualiza cuando ingreso un número en el cuadro de edición de números. El control deslizante se mueve cuando presiono "Enter", pero el gráfico no refleja el cambio. He intentado algunas cosas, pero no puedo encontrar la manera de solucionarlo.
¿Espero que puedas ayudar?
BR
Jesper