Eingabe von Daten über eine interaktive Schnittstelle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
In JSL möchte ich eine interaktive Schnittstelle erstellen, über die ein Benutzer Werte in eine Spalte eingeben kann. Die Spalte sollte vom Typ „Kontinuierlich“ sein.
Der Benutzer gibt beispielsweise einen Wert in ein Dialogfeld ein, das den Wert in eine Spalte einträgt:
x = Obergrenze, y = Untergrenze
Altersname UpperLimit LowerLimit
40 Peter 30 45
Hat jemand Vorschläge, wie man das bewerkstelligen kann?
- Anders
Betreff: Eingabe von Daten über eine interaktive SchnittstelleWenn die zeilenweise Bearbeitung in Ordnung ist, wollte ich auch Folgendes erwähnen:
Namen standardmäßig hier ( 1 ) ;
// Erstellen Sie die neue Datentabelle und ihre Spalten
dt = Neuer Tisch ( „Grenzen“ ) ;
dt << Neue Spalte ( "Untere Grenze" , Numerisch , Kontinuierlich ) ;
dt << Neue Spalte ( "Höchstgrenze" , Numerisch , Kontinuierlich ) ;
dt << rowEditor ;
Dies hat den Nachteil, dass die USL > LSL-Anforderung nicht erzwungen wird, dies könnte jedoch möglicherweise durch das Abonnieren von Änderungen an „dt“ erreicht werden (suchen Sie nach „Abonnieren“ unter „Hilfe > Skriptindex“). Beachten Sie außerdem, dass Sie den Spalten in der Tabelle Spalteneigenschaften hinzufügen können http://www.jmp.com/support/help/Expression_Data.shtml , die eine „Bereichsprüfung“ der Werte beinhalten.
Betreff: Eingabe von Daten über eine interaktive SchnittstelleVielen Dank, das war genau das, was ich gesucht habe und noch mehr!
Prost
-Anders
Betreff: Eingabe von Daten über eine interaktive SchnittstelleAnders,
Wenn ich Ihren Wünschen folge, gibt das folgende Skript Ober- und Untergrenzen ein und fügt sie einer Datentabelle hinzu.Ich habe das Skript mit Anmerkungen versehen, damit Sie hoffentlich sehen können, was das Beispiel bewirkt.
Namen standardmäßig hier( 1 );
// Erstellen Sie die neue Datentabelle und ihre Spalten
dt = New Table( "Limits" );
dt << New Column( "UpperLimit", Numeric, Continuous );
dt << New Column( "LowerLimit", Numeric, Continuous );
// Ein Anzeigefenster öffnen, um die Daten einzugeben
InputWindow = Neues Fenster( „Eingabe eingeben“,
// Ein vertikales Listenfeld hinzufügen, um die Position der Anzeige zu strukturieren
V-Listenfeld(
// Etwas Platz hinzufügen
Distanzbox (Größe (1, 10)),
// Den Anweisungstext anzeigen
Textfeld („Eingaben eingeben“),
Distanzbox (Größe (1, 10)),
// Die folgenden Anzeigen müssen nebeneinander sein
H-Listenfeld(
// Text anzeigen, um den Benutzer darüber zu informieren, welche Daten er eingeben muss
Textfeld („Geben Sie die untere Grenze ein“),
Distanzbox (Größe (10, 1)),
// Verwenden Sie ein Zahlenbearbeitungsfeld, um die Benutzereingaben zu erfassen und
// Dem Anzeigeobjekt den Namen „LLimit“ geben
LLimit = Zahlenbearbeitungsfeld( . ),
Distanzbox (Größe (10, 1)),
// Text anzeigen, um den Benutzer darüber zu informieren, welche Daten er eingeben muss
Textfeld („Geben Sie die Obergrenze ein“),
Distanzbox (Größe (10, 1)),
// Verwenden Sie ein Zahlenbearbeitungsfeld, um die Benutzereingaben zu erfassen und
// Dem Anzeigeobjekt den Namen „ULimit“ geben
ULimit = Zahlenbearbeitungsfeld( . )
),
Distanzbox (Größe (1, 10)),
// Ein paar Steuerschaltflächen hinzufügen
H-Listenfeld(
// Das erste Schaltflächenfeld fügt die Werte zur Datentabelle hinzu, wenn die
// Werte sind gültig
Schaltflächenfeld( „Werte hinzufügen“,
If( Is Missing( LLimit << get ) == 0 & Is Missing( ULimit << get ) == 0 & (ULimit << get) > (LLimit << get),
// Wenn die Werte gültig sind, fügen Sie der Datentabelle eine Zeile hinzu und legen Sie die Werte fest
dt << Zeilen hinzufügen( 1 );
dt:LowerLimit[N Rows( dt )] = LLimit << get;
dt:UpperLimit[N Rows( dt )] = ULimit << get;
,
// Wenn die Werte ungültig sind, setzen Sie sie auf „fehlend“ und
// Dem Benutzer einen Dialog anzeigen
LLimit << set( . );
ULimit << set( . );
Dialog( "Die eingegebenen Werte sind ungültig:" );
)
),
Distanzbox (Größe (10, 1)),
// Diese Schaltflächenbox schließt das Anzeigefenster
Schaltflächenfeld („Hinzufügen stoppen“, InputWindow << Fenster schließen)
)
)
);
Betreff: Eingabe von Daten über eine interaktive SchnittstelleHallo Ian und vielen Dank für deine schnelle Antwort.
Nun, ich bin neu bei JSL, daher habe ich die Syntax noch nicht vollständig verstanden und alle meine Versuche, einen Code zu schreiben, der einfach eine Benutzereingabe in einer Variablen speichert, sind daher fehlgeschlagen. Ich kenne jedoch einige Grundlagen der Java-Programmierung und die entsprechende Funktion, nach der ich suche, ist eine Scannerklasse.
Beispiel in Java:
Scanner sc = neuer Scanner (System.in);
Int Upperlimit = scanner.nextInt();
In JMP möchte ich, dass es wie folgt funktioniert:
Soweit ich mir vorstellen kann, sollten alle Zeilen sowohl für die neuen Spalten als auch für andere Spalten sichtbar sein (vielleicht wird sich das in Zukunft ändern).
versuchen (
UpperLimit = scanner.nextInt
dt = Aktuelle Datentabelle ();
dt << Neue Spalte ("UpperLimit", Numerisch, "Kontinuierlich", Werte (UpperLimit));
//dasselbe sollte mit LowerLimit gemacht werden
)
if (UpperLimit < LowerLimit, throw ("!Error") );
Ich hoffe, Sie haben meine Beispiele verstanden.
BR
Anders
Betreff: Eingabe von Daten über eine interaktive SchnittstelleEs gibt viele Möglichkeiten, dies zu tun, und ein gutes UI-Design hängt davon ab, welche Informationen Sie dem Benutzer genau anzeigen möchten, damit er die Eingabeaufgabe zuverlässig ausführen kann. Möchten oder müssen Sie alle Zeilen in der Tabelle anzeigen oder nur eine nach der anderen? Müssen Sie die vorhandenen Werte auch in einer oder mehreren der anderen Spalten anzeigen?