Problème
Vous souhaitez utiliser une zone de curseur pour définir une valeur continue et vous souhaitez voir la valeur actuelle lorsque vous déplacez le curseur.
Solution
Créez une zone de curseur et une zone d'édition de nombres. Ajoutez un script à la zone de curseur pour mettre à jour la zone d'édition de numéro. Ajoutez un script à la zone d'édition de nombre pour mettre à jour la zone de curseur.
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 fenêtre avec les zones Slider et Edit lance la 2ème fenêtre
Discussion
La zone de curseur et la zone d'édition de nombres ont des comportements différents. La Slider Box conserve la variable (œufs, par exemple) et met à jour cette variable lorsque le curseur se déplace. Le script de rappel du curseur peut utiliser la variable directement. La zone d'édition de numéro ne conserve pas la variable et ne la met pas à jour. La fonction de rappel pour Eggs Number Edit utilise <
Vous pouvez créer une variation légèrement plus simple en utilisant TextBox plutôt que NumberEditBox, mais vous souhaiterez probablement saisir une valeur exacte, ce qui est difficile avec un curseur.
Voir également
http://www.jmp.com/support/help/Display_Boxes.shtml
Aide->Livres->Référence de syntaxe JSL
Vous pouvez obtenir qu'une Slider Box donne un résultat entier en l'arrondissant dans le script de la 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("")
));Merci!
Vous devez ajouter
gb<<INVAL></INVAL>
dans les deux fonctions de rappel (pour les zones d'édition du numéro d'œufs et de bacon) pour indiquer à la GraphBox de se redessiner. < invalider et déclenche un redessin. De la façon dont vous avez écrit la zone graphique, elle récupérera les données modifiées lors de son redessinage.
Salut Craig
Merci pour cet excellent article !
J'ai légèrement modifié votre script pour illustrer un problème que je rencontre :
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>Mon problème est que le graphique ne se met pas à jour lorsque j'entre un nombre dans la zone d'édition du nombre. Le curseur se déplace lorsque j'appuie sur "Entrée", mais le graphique ne reflète pas le changement. J'ai essayé plusieurs choses, mais je n'arrive pas à comprendre comment y remédier.
J'espère que tu peux aider?
BR
Jesper