Neue JSL-Frage: Wie bekomme ich den Inhalt eines Textbearbeitungsfelds in eine Variable?Hallo,
Ich bin ein Anfänger in JSL (JMP 13.1) und habe Probleme mit der interaktiven Dialoglogik, insbesondere damit, wie man den Inhalt eines Textbearbeitungsfelds in eine Variable extrahiert.
Hier ist ein Ausschnitt eines JSL-Skripts, das nicht funktioniert (dh die Variable „prefix“ wird nicht mit dem Inhalt des Textbearbeitungsfelds „tt1“ aktualisiert).
prefix = "";
win = New Window (" TEST ",
<< Modal,
<< On Validate (
if (Is Missing (prefix),0,1);
),
H List Box (
Text Box (" Define Prefix "),
tt1 = Text Edit Box (""),
prefix = (tt1 << Get Text) // I cannot figure out how to assign the content of "tt1" to "prefix""
),
);
Show (tt1, prefix);Ich danke Ihnen für Ihre Hilfe.
Aufrichtig,
TS
Betreff: Newb JSL Frage: Wie bekomme ich den Inhalt eines Textbearbeitungsfelds in eine Variable?Sie platzieren das Zuweisungsskript derzeit in einer Funktion, die Anzeigefelder erwartet.Hier sind die verschiedenen Stellen, an denen Sie die Zeile platzieren könnten:
1/ Basierend auf Ihrem Code validieren Sie das Fenster basierend auf dem Wert des Präfixes, sodass Sie vor dem bedingten Test eine Zeile einfügen können
2/ nach dem neuen Fensteraufruf, um den Inhalt des Fensters aufzuheben, sobald der Benutzer auf OK geklickt hat
3/ innerhalb eines onClose-Ereignisses, das mit einer ähnlichen Syntax wie onValidate erstellt wurde (erreicht das Gleiche wie (2), ist aber eleganter und robuster auf allen Windows-/Mac-Plattformen
4/ innerhalb eines Event-Handlers, der an das Anzeigefeld selbst angeschlossen ist
Da Sie das Formular validieren, würde ich die erste Option wählen:
prefix = "";
win = New Window (" TEST ",
<< Modal,
<< On Validate (
prefix = tt1 << Get Text;
if (Is Missing (prefix),0,1);
),
H List Box (
Text Box (" Define Prefix "),
tt1 = Text Edit Box (""),
),
);
Show (tt1, prefix);
Betreff: Newb JSL Frage: Wie bekomme ich den Inhalt eines Textbearbeitungsfelds in eine Variable?Platzieren Sie das Skript, das den Präfixwert festlegt, in dem Skript, das ausgeführt wird, wenn das Textbearbeitungsfeld geändert wird
Names Default To Here( 1 );
prefix = "";
win = New Window( " TEST ",
<<MODAL></MODAL>
Betreff: Newb JSL Frage: Wie bekomme ich den Inhalt eines Textbearbeitungsfelds in eine Variable?Versuche dies
win = New Window( "Set a Value in Number Edit Box",
<<MODAL></MODAL>
Wenn das modale Fenster geschlossen wird, ist der zurückgegebene Wert eine Liste des Inhalts der Felder, denen Zuweisungen zugewiesen wurden:
win = {numberbox = 3.1415, texteditbox = "argyle", Button(1)};
Die Schaltfläche (1) bedeutet die OK-Schaltfläche, -1 ist die Abbrechen-Schaltfläche.
win["numberbox"] ist eine Möglichkeit, die Liste aufzufordern, ihre Mitglieder nach der Zuweisung zu durchsuchen und den Wert zurückzugeben.
Betreff: Newb JSL Frage: Wie bekomme ich den Inhalt eines Textbearbeitungsfelds in eine Variable?Hallo Craig,
Vielen Dank für Ihre Hilfe: Ich habe bereits versucht, die Zeile „prefix = (tt1 << Get Text) innerhalb des Text Edit Box-Aufrufs zu verschieben, erhalte jedoch die Fehlermeldung „Das Anzeigefeld ‚TextEditBox‘ erkennt die Meldung ‚Assign ' ".
Ich habe noch nicht herausgefunden, wie man den Return-Result-Schalter integrieren kannBetreff: Newb JSL Frage: Wie bekomme ich den Inhalt eines Textbearbeitungsfelds in eine Variable?Schauen Sie sich die Beispiele mit „Return Result“ an https://www.jmp.com/support/help/14-2/constructors-for-new-windows.shtml
Auch in deinem Beispiel:
H List Box (
Text Box (" Define Prefix "),
tt1 = Text Edit Box (""),
prefix = (tt1 << Get Text) // I cannot figure out how to assign the content of "tt1" to "prefix""
),
Die Argumente tt1=... und prefix=... für HListBox werden ausgeführt, wenn die hlistbox erstellt wird. tt1 führt zu einer textEditBox, die HListBox behält. Ich bin mir ziemlich sicher, dass der Präfixwert „“ von der Hlistbox ignoriert wird. Ich bin nicht an meinem Schreibtisch, aber ich denke, dass die textEditBox möglicherweise JSL als zweites Argument ausführen kann, wenn sich der Wert ändert ... vielleicht möchten Sie etwas Näheres tt1=texteditbox("", prefix=(tt1<Wenn das funktioniert, müssen Sie möglicherweise nicht „Return Result“ verwenden.