JSL: Slider Box Set ValueHallo allerseits,
Hier ist der Code aus dem Skriptindex zum Erstellen eines Schiebereglers:
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 setze dies auf 0,8. In diesem Fall wird der Schieberegler verschoben, das dem Schieberegler zugeordnete Skript kann jedoch 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 für die Verwendung der Meldung Set Function zu konvertieren, dies hat ihn jedoch 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 (z. B. einen benutzerdefinierten Profiler) klicken und den Wert festlegen (der Schieberegler und das zugehörige Textbearbeitungsfeld bewegen sich beide wie erwartet), sodass ich feststellen kann, dass es einen Weg gibt um dies in JSL zu tun. Ich weiß nur nicht was das ist.
Ich verwende 15.2.1 Pro auf einem Mac.
Michael
SkriptingBetreff: JSL: Slider Box Set ValueVielen Dank für ein klares Beispiel und eine Frage. Es machte es einfach zu überprüfen, ob dies ein Fehler in JMP 15 ist (möglicherweise frühere Versionen). Der Rückruf für den Schieberegler wird beim eingestellten Wert nicht ausgelöst.
Ich habe auch überprüft, ob wir das Problem in der kommenden JMP 16-Version behoben haben.
Möglicherweise gibt es eine schwierige Problemumgehung, die Sie in JSL codieren könnten, aber wo Sie sehen, dass sie auf den integrierten Plattformen funktioniert, wird sie nicht über JSL ausgeführt.
Betreff: JSL: Slider Box Set ValueIch sehe keine Problemumgehung, da es keine Möglichkeit gibt, der Aktion "Wert festlegen" einen Ausdruck zuzuordnen. Hier ist eine Variation des ursprünglichen Skripts, aber es funktioniert auch nicht, da es 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: Slider Box Set ValueDies behebt nicht das zugrunde liegende Problem, das Sie mit dem nicht auslösenden Skript identifiziert haben, aber ich setze häufig ein Bearbeitungsfeld für Zahlen neben diesen Wert mit einem Skript, um den Wert des Schiebereglers festzulegen.Auf diese Weise ist es unwahrscheinlich, dass jemand, der den Wert festlegen möchte, mit der rechten Maustaste auf den Schieberegler klickt, da es einfacher ist, einfach auf das Textbearbeitungsfeld zu klicken.Hier ist eine Möglichkeit, beides einzuschließen und gleichzeitig eine Funktion auszuführen, wenn sich 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: Slider Box Set ValueSie können diesen Ansatz auch verwenden Kombinierte und verbundene Nummer Edit Box und Slider Box