Problem
Viele Anwendungen erfordern es, den Benutzer zu Eingaben oder Auswahlmöglichkeiten aufzufordern und dann auf diese Eingabe zu reagieren. Dieses Rezept schafft eine modelllos (dh nicht modales) Dialogfeld mit Auswahlmöglichkeiten. Wenn der Benutzer auf die klickt Okay Schaltfläche zum Schließen des Fensters, speichert die Benutzereingaben in Variablen und führt dann die erforderliche Arbeit aus.
Lösung
Der Neues Fenster() Die Funktion erstellt ein Fenster, das Sie verwenden können, um den Benutzer zur Eingabe aufzufordern. Innerhalb des neuen Fensters können Sie verwenden Eingabeauswahl-Anzeigefelder um die Benutzerauswahl zu sammeln.
Sie verwenden dann die Funktion festlegen oder Skript festlegen Optionen auf a Button-Box um die Werte aus den Anzeigefeldern in JSL-Variablen zu speichern.
Der letzte Teil des Skripts in der Schaltflächenbox erledigt die erforderliche Arbeit, nachdem der Benutzer das Fenster geschlossen hat.
win = New Window( "Set the Value",
H List Box( Text Box( "Set this value" ), num_edit_box1 = Number Edit Box( 42 ) ),
check_box_1 = Check Box( "On" ),
combo_box1 = Combo Box( {"Choice 1", "Choice 2", "Choice 3"} ),
list_box1 = List Box( {"Choice 3", "Choice 4", "Choice 5"} ),
H List Box(
Button Box( "OK",
//store results in jsl variables
num_input = num_edit_box1 << get;
check_box_input = check_box_1 << get;
combo_box_input = combo_box1 << get selected;
list_box_input = list_box1 << get selected;
//close the window
//wait until you've unloaded the input boxes before you closing
//or else they'll be gone
win << close window;
//now do whatever work you want with the inputs
Show( num_input, check_box_input, combo_box_input, list_box_input );
),
//a cancel button that closes the window and doesn't store store the results
Button Box( "Cancel", win << close window )
)
);
Diskussion
Nicht modale Dialoge sind etwas kniffliger als modale Dialoge, da jeder Code nach dem Neues Fenster() wird ausgeführt, bevor der Dialog geschlossen wird. Aus diesem Grund müssen Sie die zu erledigende "Arbeit" in das Schaltflächenfeld-Skript einfügen.
Siehe auch
Rufen Sie Werte aus einem nicht modalen Dialogfeld ab