JSL: Slider-Box-Set-WertHallo allerseits,
Hier ist der Code aus dem Scripting Index zum Erstellen einer 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 ) )
)
)
);
Wenn Sie dieses Beispiel ausführen, können Sie mit der rechten Maustaste auf den Schieberegler klicken, um einen bestimmten Wert festzulegen:

Nehmen wir an, ich habe diesen Wert auf 0,8 eingestellt. Wenn ich das tue, bewegt sich der Schieberegler, aber das mit dem Schieberegler verknüpfte Skript kann nicht ausgeführt werden. Das heißt, das Textfeld über dem Schieberegler wird nicht aktualisiert.
Frage 1: Warum?
Frage 2: Gibt es eine andere Möglichkeit, den neuen Wert in das Textfeld zu übertragen? Ich habe versucht, den Code so zu konvertieren, dass er die Set Function-Meldung verwendet, aber das hat das Problem nicht gelöst.
Ich habe festgestellt, dass die Plattform korrekt zu reagieren scheint, wenn Sie mit der rechten Maustaste auf einen Schieberegler in einer Plattform klicken (z. B. im benutzerdefinierten Profiler) (z. B. im benutzerdefinierten Profiler) und einen Wert festlegen (Schieberegler und zugehöriges Textbearbeitungsfeld bewegen sich beide wie erwartet), sodass ich erkennen kann, dass es eine Möglichkeit gibt um dies in JSL zu tun. Ich weiß einfach nicht, was das ist.
Ich verwende 15.2.1 Pro auf einem Mac.
Michael
Automatisierung und SkripterstellungBetreff: JSL: Schieberegler-Box-Wert festlegenJa, ich habe den Wunschlisteneintrag erstellt.Kombiniertes und verbundenes Zahlenbearbeitungsfeld und Schiebereglerfeld
Betreff: JSL: Schieberegler-Box-Wert festlegenDanke. Ich kannte den Ansatz der Nummernbearbeitungsbox und tendiere jetzt dazu, diesen Weg zu gehen. Der verlinkte Thread von @MathStatChem Klingt wie ein Wunschlisteneintrag, um entweder einen neuen Typ einer Anzeigebox zu erstellen oder der Sliderbox eine Option hinzuzufügen, die optional ein NEB-Steuerelement hinzufügen würde. Ich gehe davon aus, dass der Wunschlisteneintrag bereits erstellt wurde.
Betreff: JSL: Schieberegler-Box-Wert festlegenSie könnten diesen Ansatz auch verwenden Kombiniertes und verbundenes Zahlenbearbeitungsfeld und Schiebereglerfeld
Betreff: JSL: Schieberegler-Box-Wert festlegenDies behebt nicht das zugrunde liegende Problem, das Sie identifiziert haben, weil das Skript nicht ausgelöst wurde, aber ich habe oft mit einem Skript ein Zahlenbearbeitungsfeld neben diesem Wert platziert, um den Wert des Schiebereglers festzulegen.Auf diese Weise ist es unwahrscheinlich, dass jemand mit der rechten Maustaste auf den Schieberegler klickt, wenn er den Wert festlegen möchte, da es einfacher ist, einfach auf das Textbearbeitungsfeld zu klicken.Hier ist eine Möglichkeit, beides einzubeziehen und gleichzeitig eine Funktion auszuführen, wenn der Schieberegler bewegt oder ein neuer Wert eingegeben wird:

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);
) )
)
)
)
);Betreff: JSL: Schieberegler-Box-Wert festlegenIch sehe keine Lösung, da es keine Möglichkeit gibt, einen Ausdruck mit der Aktion „Wert festlegen“ zu verknüpfen. Hier ist eine Variation des ursprünglichen Skripts, die jedoch ebenfalls nicht funktioniert, da sie aufgerufen wird, wenn der Schieberegler bewegt wird.
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 ) )
)
)
)
)
);Betreff: JSL: Schieberegler-Box-Wert festlegenVielen Dank für die Bereitstellung eines klaren Beispiels und einer klaren Frage. Dadurch konnte leicht überprüft werden, dass es sich hierbei um einen Fehler in JMP 15 (vielleicht früheren Versionen) handelt. Der Rückruf für den Schieberegler wird beim Set-Wert nicht ausgelöst.
Ich habe auch überprüft, dass wir das Problem in der kommenden JMP 16-Version behoben haben.
Möglicherweise gibt es eine knifflige Problemumgehung, die Sie in JSL programmieren könnten, aber wenn Sie feststellen, dass es auf den integrierten Plattformen funktioniert, erfolgt dies nicht über JSL.