JMP se ralentiza después de cerrar con ventana de selecciónHola,
Estoy intentando solicitar a los usuarios que seleccionen grupos desde una ventana que se abre al comienzo de un script que define un objeto que se utilizará durante el resto del script. Cuando el usuario selecciona y utiliza el cuadro de botones, funciona muy bien, pero si cierra la ventana con el botón, JMP se ralentiza y resulta imposible editar la ventana del script sin hacer clic derecho > Detener script. ¿Alguien tiene alguna idea sobre qué es lo que falta aquí?
Names Default to Here (1);
groupsel=Expr(
done = 0;//Track if selection made
nwcurr = New Window("Select Group",
V List Box(
Text Box("Please select a group:"),
rb = Radio Box({"A", "B", "C"}),
Button Box("OK",
// Set the selected currency based on the user's choice
group = rb << Get Selected;
nwcurr << Close Window; // Close the modal window after selection
done = 1; // Mark the selection as done
)
)
);
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
// Wait loop until the selection is made
Wait(0.1); // Small wait to reduce CPU usage
while(done == 0, Wait(0.1)); // Loop until 'done' is set to 1
);
Eval(groupsel);Automatización y scriptingRe: JMP se ralentiza después de cerrar la ventana de selecciónSu variable "done" siempre será 0, si la ventana acaba de cerrarse, por lo que quedará atrapado en el bucle While.
Re: JMP se ralentiza después de cerrar la ventana de selecciónPuede que sea un buen momento para utilizar una ventana modal. No necesitará la variable "listo".
Names Default To Here( 1 );
groupsel = Expr(
nwcurr = New Window( "Select Group",
<<MODAL></MODAL>
Re: JMP se ralentiza después de cerrar la ventana de selecciónU otra opción fuera de usar la ventana modal, es mover las acciones que desea realizar a su propia función/expresión que se ejecutará cuando se presione Aceptar.
Names Default To Here(1);
expr_actions = Expr(
group = rb << Get Selected;
show(group);
);
groupsel = Expr(
nwcurr = New Window("Select Group",
V List Box(
Text Box("Please select a group:"),
rb = Radio Box({"A", "B", "C"}),
Button Box("OK",
expr_actions;
nwcurr << Close Window;
)
)
);
);
Eval(groupsel);
El modo modal es más fácil, pero dependiendo del caso de uso proporcionará una peor experiencia de usuario (al menos en mi opinión).
Re: JMP se ralentiza después de cerrar la ventana de selecciónUtilice una de las sugerencias anteriores. Consulte Diálogos modales para ver ejemplos que pueden ayudar a escribir una solución modal.
Parte del comportamiento que estás viendo se debe a este código:
nwcurr << On Close(
Throw("No selection made. Script stopped."),Stop();
);
La expresión OnClose debe evaluarse como 0 o 1; 0 (falso) significa que no se debe permitir que la ventana se cierre y 1 (verdadero) significa permitir que la ventana termine de cerrarse. No estoy seguro de qué sucede con el lanzamiento, pero probablemente no sea nada bueno; no se devuelve ningún valor. JMP nunca ve la función stop(); parece ser un parámetro adicional sin usar. Use un punto y coma entre las declaraciones.