¿Cómo actualizar cuadros de visualización en jmp?Hola,
Tengo un cuadro de visualización (cuadro de texto) que me gustaría actualizar en un bucle for.
Veo que no puedo actualizar de manera confiable el cuadro de texto en el bucle.
Esto es realmente molesto porque tengo muchos archivos que procesar y no es posible
Siempre revise físicamente las unidades para ver si los archivos se están procesando.
Estoy usando Wait(0) para permitir que jmp se ponga al día. He probado con luz ocupada
también que tiene el mismo problema. Todo se actualiza al final.
También probé Wait(1), que funciona, pero nuevamente no es tan confiable.
¿Cómo puedo crear una actualización de estado de cuadro de texto simple?
¡Gracias por tus aportes!
Re: ¿Cómo actualizar cuadros de visualización en jmp?Sí, los he visto. La barra de progreso es ordenada. Sin embargo, también aparece en una nueva ventana y no funciona bien si intentas arreglar todo en una sola ventana. Aunque prometedor. Intentaré ver si puedo hacer que funcione en mi interfaz de usuario de alguna manera. El otro es simplemente un método de cuadro de texto que, como se mencionó, al menos en mi caso no funciona.Supongo que el problema realmente es que no hay suficiente tiempo para las actualizaciones de visualización en caso de que el bucle for tenga demasiadas cosas (alguna publicación mencionó algo que tiene que ver con que Windows no pueda actualizar los cuadros de visualización a tiempo). El método del cuadro de texto funciona si espero más. Un tiempo de espera de 0 no funciona todo el tiempo (lo que significa que a menudo todo se actualiza después de que finaliza el bucle).
Intentaré crear un rastreador de progreso general que pueda actualizarse de manera confiable. Si lo logro, publicaré nuevamente.
¡Gracias por tu ayuda y tu paciencia!
Re: ¿Cómo actualizar cuadros de visualización en jmp?Hice una búsqueda de "barra de progreso" en este foro y encontré dos enlaces útiles:
Consulta el código de @msharp aquí: Cómo mostrar la barra de progreso en lugar de abrir y cerrar tablas intermedias
Código similar de @SDF1 aquí: Sugerencia sobre cómo crear un script para una pequeña ventana de actualización/progreso para el modelado
Re: ¿Cómo actualizar cuadros de visualización en jmp?Gracias. El fragmento que proporcionaste funciona, por supuesto, pero estoy buscando algo que pueda
integrar en mi interfaz de usuario. No quiero mostrar un mensaje emergente. Hay muchos elementos en mi UI.
que requieren esta característica de estado y por lo tanto quiero algo que pueda agregar a mi Nueva ventana()
como cuadro de visualización y uso como barra de estado.
Estoy buscando algo como esto:
cap = "";
some_test_function = Function({},
Show("What?");
for (i = 1, i <= 1000000, i++,
if (mod(i, 1000) == 0,
//Something like this!!! Not working of course.
cap << Set Text("Processing " || char(i) || " records");
wait(0);
);
k = i^3;
l = k * 4 + i^4;
);
);
nw = New Window("test",
bb = Button Box("test caption", some_test_function),
cap = caption("processing"),
);Intenté usar la luz de ocupado también pero tiene el mismo problema. Además, no sé si lo anterior, si se corrige, funcionará cuando haya muchas operaciones de tabla dentro del bucle for en lugar de un simple conteo. Quizás tenga que usar la espera. Por eso estoy atascado con la opción del cuadro de texto.
Agradecería mucho cualquier otra solución que pueda usarse en un escenario de interfaz de usuario con múltiples elementos que tengan acceso al mismo cuadro de visualización de estado.
¡Gracias!
Re: ¿Cómo actualizar cuadros de visualización en jmp?Si le muestra el estado de procesamiento al usuario, es posible que desee probar la función de título en lugar de un cuadro de texto.
for (i = 1, i <= 1000000, i++,
if (mod(i, 1000) == 0,
caption("Processing " || char(i) || " records");
wait(0);
);
k = i^3;
l = k * 4 + i^4;
);
caption(remove);
wait(0);Re: ¿Cómo actualizar cuadros de visualización en jmp?Gracias por tu comentario. De hecho, lo sé. El código que me diste solo genera una ventana con un número.
Supongo que está imprimiendo el último número ya que todo va muy rápido.
Estoy haciendo algo como lo que mostraste: un bucle con un montón de manipulaciones de tablas dentro y una actualización de texto en
luego final del ciclo. Cuando digo confiable, quiero decir que si pongo una actualización al final del bucle for, debería cambiar el texto.
en ese momento.A menudo, sólo es visible la última actualización.
Lo que realmente encontré que funciona ahora es algo que obtuve de otra publicación (no sé cuál ya que estaba mirando algunas de ellas).
Básicamente, uno puede crear y eliminar un cuadro de texto en un bucle. De alguna manera, actualizar el texto no actualiza el cuadro de texto, lo cual es extraño.
De todos modos, de momento me funciona borrar y recrear el cuadro de texto en el lugar exacto con un texto nuevo.
¡Gracias por tus aportes!
Re: ¿Cómo actualizar cuadros de visualización en jmp?Probablemente se necesiten más detalles para comprender el comentario "no se puede actualizar de manera confiable". El siguiente código muestra la idea, pero sospecho que ya lo sabes. Tenga en cuenta que generalmente se debe evitar 'Wait()' en JSL, y aquí solo simula la duración de algún otro procesamiento.
NamesDefaultToHere(1);
nw = NewWindow("Update Text Box", tb = TextBox(Char(Today())), << sizeWindow(400, 200));
for(t=1, t<=10, t++,
/// Simulate some activity that takes time
delay = RandomInteger(1, 5);
Wait(delay);
// Update the Text Box
tb << setText(Char(Today()));
Beep();
);