Problema
Muchas aplicaciones requieren que el usuario solicite entradas o opciones y luego actúe sobre esa entrada. Esta receta crea un modelo (es decir, no modal) cuadro de diálogo con opciones. Cuando el usuario hace clic en el Bueno para descartar la ventana, almacena las entradas del usuario en variables y luego realiza cualquier trabajo que sea necesario.
Solución
los Nueva ventana() La función creará una ventana que puede usar para solicitar al usuario que ingrese información. Dentro de la nueva ventana puedes usar cuadros de visualización de selector de entrada para recoger las opciones del usuario.
A continuación, utilizará el Establecer función o establecer guión opciones en un Caja de botones para almacenar los valores de los cuadros de visualización en las variables JSL.
La parte final de la secuencia de comandos en el Cuadro de botones hace el trabajo requerido después de que el usuario cierre la ventana.
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 )
)
);
Discusión
Los diálogos sin modo son un poco más complicados que los diálogos modales, ya que cualquier código después de la Nueva ventana() Se ejecutará antes de que se descarte el diálogo. Es por eso que tiene que poner el "trabajo" que debe hacerse en el script del cuadro de botón.
Ver también
Recuperar valores de un cuadro de diálogo sin modelo