Actualización de Windows y Persistencia de la Ventana<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola. Tengo una expresión que primero crea una ventana de notificación modal, y al presionar OK, crea una segunda ventana de edición. En la ventana de edición, hay un botón Actualizar que cierra la ventana y vuelve a ejecutar la expresión original. Cuando presiono "Actualizar", la ventana de edición se cierra como se esperaba y la ventana de notificación modal aparece nuevamente. Sin embargo, la segunda iteración de la ventana de edición aparece con un "2" adjunto a su nombre ("editwin 2"), aunque el editor original ya está cerrado. Además, el script << On Close que debe ejecutarse inmediatamente cuando se cierra la ventana de edición la primera vez, no se ejecuta hasta que se cierra la segunda instancia de la ventana de notificación y la segunda instancia de la ventana de edición está a punto de abrirse. Parece que aunque la ventana de edición está cerrada, persiste en la memoria hasta que aparezca la siguiente instancia de la ventana de edición.
¿Alguien tiene una buena explicación para este comportamiento y, lo que es más importante, cuál es la solución?
Gracias.
Nombres predeterminados hasta aquí (1);
Eliminar símbolos ();
editwin.expr = Expr (
BB1 = ButtonBox ("ok",
Ventana ("editwin") << Cerrar ventana;
);
BB2 = ButtonBox ("Actualizar",
Ventana ("editwin") << Cerrar ventana;
editwin.expr;
);
modwin = Nueva ventana ("modwin", << Modal,
TextBox ("Soy una ventana de notificación"),
ButtonBox ("OK", Write ("Closing modwin \! N"))
);
editwin = Nueva ventana ("editwin",
TextBox ("Soy una ventana de edición"),
BB1, BB2
);
editwin << On Close (Write ("Closing editwin \! N"));
editwin << Establecer tamaño de la ventana (300, 200);
);
editwin.expr;
Re: Refrescando Windows y Persistencia de la VentanaSolo ofrezco este código en caso de que le brinde un enfoque diferente al problema que está tratando de resolver.
Nombres predeterminados aquí ( 1 ) ;
Ventana de edición = Función ({} , { Predeterminado local } ,
nwEdit = Nueva ventana ( "editwin" , << Modal ,
Caja de texto ( "Soy una ventana de edición" ) ,
Botonera ( "DE ACUERDO" ) ,
) ;
Si ( nwEdit El "Botón" ] == - 1 ,
evaluación = 1
,
evaluación = 0
) ;
evaluación
) ;
noroeste = Nueva ventana ( "modwin" , << Modal ,
<< En Validar (
Ventana de edición ()
) ,
Caja de texto ( "Soy una ventana de notificación" ) ,
Botonera ( "DE ACUERDO" , Escribir ( "Cierre modwin \! N" ) ; )
) ;
Re: Refrescando Windows y Persistencia de la Ventanaestá en lo cierto, mi solución no soluciona el problema de la ventana, pero sí elimina la dependencia del nombre de la ventana. jJMLP Jmp pasa la ventana al sistema operativo y, por lo tanto, pierde el control absoluto de cuándo se cierra la ventana.
Re: Refrescando Windows y Persistencia de la VentanaInteresante. Estoy usando JMP 11.1.1 para Windows (64 bits). No estoy preparado para descartar el problema todavía como un problema de 11 contra 12 o de Mac contra Windows. En cualquier caso, todavía tengo que encontrar una solución para mi configuración actual.
Re: Refrescando Windows y Persistencia de la VentanaDesafortunadamente su script no impide el cambio de nombre de la ventana. Intenté y obtuve exactamente el mismo comportamiento.
Re: Refrescando Windows y Persistencia de la VentanaPara su información, probé el script en JMP 12 para Mac y no vi este problema; editwin fue nombrado editwin cada vez, no se produjo una numeración automática.
Sin embargo, en JMP 12 para Windows pude reproducir el problema: editwin 2, editwin 3, etc. Se generan después de cada actualización. No tengo idea de por qué.
El enfoque de Txnelson presenta una buena solución.
Re: Refrescando Windows y Persistencia de la VentanaNo pude resolver el problema de los nombres de ventana. Parece que JMP mantiene el nombre en reserva por la duración de la ejecución de un EXPR dado. Sin embargo, el código a continuación elimina la preocupación sobre el nombre de la ventana, realizando todas las acciones en el identificador de la ventana, en lugar del nombre de la ventana:
Nombres predeterminados hasta aquí (1);
Eliminar símbolos ();
editwin.expr = Expr (
BB1 = ButtonBox ("ok",
editwinx << Cerrar ventana;
);
BB2 = ButtonBox ("Actualizar",
editwinx << Cerrar ventana;
editwin.expr;
);
modwin = Nueva ventana ("modwin", << Modal,
TextBox ("Soy una ventana de notificación"),
ButtonBox ("OK", Write ("Closing modwin \! N"));
);
editwinx = Nueva ventana ("editwin",
TextBox ("Soy una ventana de edición"),
BB1, BB2
);
editwinx << On Close (Write ("Closing editwinx \! N"));
editwinx << Establecer tamaño de la ventana (300, 200);
);
editwin.expr;