¿Cómo obtener el elemento seleccionado de un cuadro de lista? ¿Ha cambiado el comportamiento de JSL?Actualmente estoy viendo este magnífico vídeo instructivo sobre cómo escribir un script JSL de @David_Burnham .
Hasta los 7 minutos y 28 segundos todo funciona como se espera. A partir de los 8 minutos y 13 segundos, justo cuando la ventana se convierte en una ventana modal, este código genera un error:
// 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>Creo que encontré una solución: <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">cómo obtener valores de entrada específicos de ventanas modales para insertarlos en un script JMP y guardarlos.</A> Al menos, cuando ejecuto el script y presiono el botón "Aceptar" de la ventana modal, <FONT face="courier new,courier" color="#0000FF">`sel`</FONT> devuelve una lista con los valores seleccionados.</P> <P><U><STRONG>Guion</STRONG></U>:</P> <BR />
<CODE class=" language-jsl">// works
NewWindow("Select", <
<MODAL>
<CODE class=" language-jsl"> <BR /> <P><U><STRONG>Salida de ejemplo</STRONG></U>:</P> <CODE class=" language-jsl">sel = {"A", "B"};
{Button( 1 )} // what is this? Tres cosas que me gustaría entender:
- ¿Hay algún problema con el código original que publiqué al principio (// no funciona) o JSL ha cambiado de comportamiento desde que se grabó el vídeo?
- El valor de retorno {Botón( 1 )} no lo entiendo. ¿Por qué está ahí? Supongo que proviene de Button Box(), pero el índice de script no es informativo.
- ¿Voy por buen camino con el botón personalizado?
Editar:
La solución incluso se encuentra en el video instructivo.
lst = {"A", "B", "C"};
NewWindow("Select", <
<MODAL></MODAL>
Re: Obtener el elemento seleccionado de un cuadro de lista: ¿ha cambiado el comportamiento de JSL?1. Después de que se cierre la ventana modal, ya no podrá acceder a los valores a menos que se devuelvan cuando se utilice << return result.
2. El botón (1) simplemente significa que se presionó el botón Aceptar y puede usarlo, por ejemplo, para controlar el flujo de su script.
3. Sí, obtener los valores al pulsar Aceptar es una buena opción.
Normalmente primero intento con << Devolver resultado y si no funciona con mi ventana actual, entonces obtengo los valores cuando se presiona el botón Aceptar. Casi siempre agrego botones Aceptar y Cancelar cuando se usa un cuadro de diálogo modal, aunque no sean necesarios. Guía de scripting > Árboles de visualización > Ventanas modales en JSL > Construir una ventana modal .
A continuación se muestra un ejemplo usando << Resultado de retorno
Names Default To Here(1);
lst = {"A", "B", "C"};
nw = New Window("Modal Dialog example",
<
<TYPE></TYPE>
<P>Y en caso de que no funcione como usted quisiera (quiero elementos que se agreguen al cuadro de lista, no elementos seleccionados).</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 />
Re: Obtener el elemento seleccionado de un cuadro de lista: ¿ha cambiado el comportamiento de JSL?Gracias, como siempre, ¡muchas gracias! Sigue siendo un misterio cómo lo que falla aquí funciona en el vídeo que enlacé en mi publicación original.
Re: Obtener el elemento seleccionado de un cuadro de lista: ¿ha cambiado el comportamiento de JSL?Podría estar relacionado con una versión anterior de JMP y con algunos problemas de sincronización.