JSL: valeur du jeu de boîtes de curseurSalut à tous,
Voici le code de l'index de script pour créer un Slider Box:
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 ) )
)
)
);
Si vous exécutez cet exemple, vous pouvez cliquer avec le bouton droit sur le curseur pour définir une valeur spécifique:

Supposons que je mette cela à 0,8. Si je le fais, le curseur se déplace, mais le script associé au curseur ne s'exécute pas. Autrement dit, la zone de texte au-dessus du curseur ne se met pas à jour.
Question 1: Pourquoi?
Question 2: Existe-t-il une manière différente de transférer la nouvelle valeur dans la zone de texte? J'ai essayé de convertir le code pour utiliser le message Set Function mais cela ne l'a pas résolu.
J'ai observé que si vous cliquez avec le bouton droit sur un curseur dans une plate-forme (comme le profileur personnalisé) et définissez la valeur, la plate-forme semble répondre correctement (le curseur et la zone d'édition de texte associée se déplacent tous les deux comme prévu), je peux donc dire qu'il existe un moyen pour faire cela dans JSL. Je ne sais juste pas ce que c'est.
J'utilise 15.2.1 Pro sur un Mac.
Michael
ScriptingRe: JSL: valeur du jeu de boîtes de curseurMerci d'avoir fourni un exemple clair et une question. Cela a permis de vérifier facilement qu'il s'agit d'un bogue dans JMP 15 (peut-être des versions antérieures). Le rappel du curseur n'est pas déclenché sur la valeur définie.
J'ai également vérifié que nous l'avons corrigé dans la prochaine version de JMP 16.
Il peut y avoir une solution de contournement délicate que vous pouvez coder en JSL, mais là où vous le voyez fonctionner dans les plates-formes intégrées, cela ne se fait pas via JSL.
Re: JSL: valeur du jeu de boîtes de curseurJe ne vois pas de solution de rechange car il n'existe aucun moyen d'associer une expression à l'action Définir la valeur. Voici une variante du script d'origine, mais cela ne fonctionne pas non plus car il est appelé lorsque le curseur est déplacé.
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 ) )
)
)
)
)
);Re: JSL: valeur du jeu de boîtes de curseurCela ne résout pas le problème sous-jacent que vous avez identifié avec le script ne se déclenchant pas, mais je place souvent une zone d'édition numérique à côté de cette valeur avec un script pour définir la valeur du curseur.De cette façon, si quelqu'un veut définir la valeur, il est peu probable qu'il fasse un clic droit sur le curseur car il est plus facile de cliquer simplement sur la zone d'édition de texte.Voici une façon d'inclure les deux, tout en exécutant une fonction lorsque le curseur bouge ou qu'une nouvelle valeur est saisie:

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);
) )
)
)
)
);Re: JSL: valeur du jeu de boîtes de curseurVous pouvez également utiliser cette approche Zone d'édition et curseur de nombre combinés et connectés