Ausgewähltes Element aus einer Liste abrufen – geändertes Verhalten von JSL?Ich schaue mir gerade dieses tolle Anleitungsvideo von @David_Burnham an, in dem er erklärt, wie man ein JSL-Skript schreibt.
Bis 7 Minuten und 28 Sekunden funktioniert alles wie erwartet. Ab etwa 8 Minuten und 13 Sekunden, genau dann, wenn das Fenster in ein modales Fenster umgewandelt wird, löst dieser Code einen Fehler aus:
// doesn't work:
lst = {"A", "B", "C"};
New Window("Select", << Modal,
Border Box(top(10), bottom(10), left(15), right(10),
V List Box(
TextBox("Select the predictor variable", <
<SETFONTSTYLE></SETFONTSTYLE>
<BR /> <P>Ich glaube, ich habe hier eine Lösung gefunden: <A href="https://community.jmp.com/t5/Discussions/How-to-get-specific-input-values-from-modal-windows-to-be-placed/m-p/483379#U483379" class="lia-mention-container-editor-message lia-img-icon-forum-thread lia-fa-icon lia-fa-forum lia-fa-thread lia-fa" target="_blank">Wie kann ich bestimmte Eingabewerte aus Modal-Fenstern in ein JMP-Skript einfügen und speichern?</A> Wenn ich das untenstehende Skript ausführe und im Modal-Fenster auf „OK“ klicke, gibt <FONT face="courier new,courier" color="#0000FF">`sel`</FONT> eine Liste mit den ausgewählten Werten zurück.</P> <P><U><STRONG>Skript</STRONG></U>:</P> <BR />
<CODE class=" language-jsl">// works
NewWindow("Select", <
<MODAL>
<CODE class=" language-jsl"> <BR /> <P><U><STRONG>Beispielausgabe</STRONG></U>:</P> <CODE class=" language-jsl">sel = {"A", "B"};
{Button( 1 )} // what is this? Drei Dinge, die ich gerne verstehen würde:
- Gibt es ein Problem mit dem ursprünglichen Code, den ich oben gepostet habe (// funktioniert nicht), oder hat sich das Verhalten von JSL seit der Videoaufnahme geändert?
- Der Rückgabewert {Button( 1 )} ist mir unverständlich. Wozu dient er? Ich vermute, er stammt von der Funktion ButtonBox(), aber der Skriptindex ist nicht aussagekräftig.
- Bin ich mit dem benutzerdefinierten Button auf dem richtigen Weg?
Bearbeiten:
Eine Lösung findet sich sogar im Anleitungsvideo.
lst = {"A", "B", "C"};
NewWindow("Select", <
<MODAL></MODAL>
Betreff: Ausgewähltes Element aus einer Listenbox abrufen – geändertes Verhalten von JSL?1. Nach dem Schließen des Modal-Fensters können Sie nicht mehr auf die Werte zugreifen, es sei denn, sie werden mit dem Befehl << return result zurückgegeben.
2. Button(1) bedeutet lediglich, dass die OK-Taste gedrückt wurde, und Sie können dies beispielsweise verwenden, um den Ablauf Ihres Skripts zu steuern.
3. Ja, die Option, Werte beim Drücken von OK abzurufen, ist eine gute Lösung.
Ich versuche es normalerweise zuerst mit `<< Return Result`. Wenn das mit meinem aktuellen Fenster nicht funktioniert, rufe ich die Werte beim Klicken auf die OK-Schaltfläche ab. Ich füge (fast) immer OK- und Abbrechen-Schaltflächen hinzu, wenn ein modales Dialogfeld verwendet wird, obwohl sie nicht unbedingt notwendig sind (siehe Scripting Guide > Display Trees > Modal Windows in JSL > Construct a Modal Window) .
Nachfolgend ein Beispiel mit << Return Result
Names Default To Here(1);
lst = {"A", "B", "C"};
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE>
<P>Und der Fall, dass es nicht so funktioniert, wie Sie es vielleicht gerne hätten (ich möchte Elemente, die der Kollisionsbox hinzugefügt werden, nicht ausgewählte Elemente).</P> <BR /> <BR /> <CODE class=" language-jsl">Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE> <BR /> <BR />
Betreff: Ausgewähltes Element aus einer Listenbox abrufen – geändertes Verhalten von JSL?Vielen Dank – wie immer sehr geschätzt! Es ist mir immer noch ein Rätsel, warum das, was hier fehlerhaft ist, in dem Video funktioniert, das ich in meinem ursprünglichen Beitrag verlinkt habe.
Betreff: Ausgewähltes Element aus einer Listenbox abrufen – geändertes Verhalten von JSL?Könnte mit einer älteren Version von JMP und bestimmten Timing-Einstellungen zusammenhängen.