So geben Sie für viele Elemente einen Wert aus dem Zahlenbearbeitungsfeld zurückHallo JMPer,
Einige Probleme mit den Rückgabewerten des Zahlenbearbeitungsfelds.
Ich habe auf andere Beiträge verwiesen( Zahlenfeld kombinieren , Sammeln Sie alle Daten in einem neuen Fenster ) und versuche, meinen Code zu erstellen.
Da ich viele Artikel habe, denen ein Wert zugewiesen werden muss, ist es für mich nicht praktikabel, bei jedem Artikel eine Nummer einzugeben.
Daher werden „Neues Fenster“ und „Anhängen“ verwendet, um den Rückgabewert für viele Elemente zu löschen.
Letztendlich gibt der Code einfach den Standardwert (1) zurück und nicht die Zahl, die ich eingebe.
Können Sie mir helfen, zu überprüfen, welche Schritte in meinem Code falsch sind?
Vielen Dank für die tolle Hilfe im fortgeschrittenen Stadium.
list = {"A", "B", "C","D","E","F","G"};
val={};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK", Set Script( nw< )
);
show(val);
Betreff: So geben Sie für viele Elemente einen Wert aus dem Zahlenbearbeitungsfeld zurückSie haben Recht, dass JMP die Verarbeitung auch ohne Klicken auf „OK“ fortsetzt. Es sei denn, Sie tun eines von zwei Dingen. Machen Sie Ihr Anzeigefenster zu einem „modalen“ Fenster
nw = New Window("Test Window", Modal, ....................);
Dadurch muss die Verarbeitung warten, bis das Fenster gelöscht wird.
Oder
Strukturieren Sie Ihren Code in Functions() oder Expressions, Expr(), die den darin enthaltenen Code erst dann ausführen, wenn sie ausdrücklich von Ihrem Fenstercode oder von einer anderen Function() oder Expr() aufgerufen werden.
Betreff: So geben Sie für viele Elemente einen Wert aus dem Zahlenbearbeitungsfeld zurückHallo Jim,
Vielen Dank wirklich für die professionelle Antwort.
Ich erstelle meinen Code auf der Grundlage all Ihrer Vorschläge, habe aber Probleme mit der sequentiellen Ausführung (die JSL führt alle folgenden Codes aus, auch wenn ich noch nicht auf „OK“ geklickt habe).
Daher muss ich meinen gesamten folgenden Code in Set Script einfügen, um die korrekte Ausführungssequenz sicherzustellen.
Da fallen mir zwei Möglichkeiten ein:
1) Kann diese Methode im <<-Modal verwendet werden? Es scheint, dass <
2) Funktioniert wait(0) hier? und wo soll ich es im Code einfügen?
Hier ist mein vereinfachter Code, um meine Probleme zu zeigen. Ich markiere zwei Zeilen blau, um zu zeigen, was ich getan habe.
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example",
v = V List Box(),
Button Box( "OK",
Set Script(
nw << close window;
New Window( "result", < );
)
)
);
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
exq = Number Edit Box(
1,
10,
<nw2 = New Window( "fake result", <
Betreff: So geben Sie für viele Elemente einen Wert aus dem Zahlenbearbeitungsfeld zurückHier ist eine modifizierte Version des Beispiels aus
Hilfe==>Skriptindex==>TextEditBox==>Funktion festlegen
das veranschaulicht den Zweck von „{this}“
Names Default To Here( 1 );
New Window( "Example",
xx = Text Edit Box( "pw?" ),
Text Box( "" )/* here's the sibling box, waiting to show the pw */
);
xx << SetFunction(
Function( {this},
this << passwordStyle( 1 );/* hide my display*/ /* put my password into my sibling's display */
(this << sib) << settext( this << getText );
)
);Betreff: So geben Sie für viele Elemente einen Wert aus dem Zahlenbearbeitungsfeld zurückDanke Jim, das ist wirklich eine gute Möglichkeit und hilft mir, mehr über „Expr“, „substitute“ und „Eval“ zu verstehen.
Für << SetFunction ( Function ( {this} , val[i] = exq << get ) ),
Ich denke, ich kann das „dies“ weglassen und eine leere Klammer hinterlassen. (Ich habe es versucht und es hat immer noch funktioniert)
Besteht ein potenzielles Risiko, wenn die Halterung leer bleibt?
Danke schön.
Betreff: So geben Sie für viele Elemente einen Wert aus dem Zahlenbearbeitungsfeld zurückDas Problem, das Sie haben, besteht darin, dass Sie davon ausgehen, dass jede einzelne Spezifikation von „exq“ in einer eindeutigen Instanz beibehalten wird. Was tatsächlich geschieht, ist, dass sie übereinander geschrieben werden. Der folgende Code trennt die Instanzen.
Names Default To Here( 1 );
list = {"A", "B", "C", "D", "E", "F", "G"};
val = {};
nw = New Window( "example", v = V List Box(), Button Box( "OK", Set Script( nw << close window ) ) );
For( i = 1, i <= N Items( list ), i++,
Insert Into( val, 1 );
(v << append(
Outline Box( "",
H List Box(
Text Box( list[i] ),
Eval(
Substitute(
Expr(
__exq__ = Number Edit Box(
1,
10,
<<SETFUNCTION></SETFUNCTION>