No importa, lo descubrí: una de las funciones tenía Eval() que se evaluaba justo cuando se iniciaba el script.
Estoy escribiendo un prototipo de GUI simple:
Lista de tablas en un cuadro combinado, botón para agregar/abrir tabla y cuadro de filtro con los nombres de columnas de la tabla seleccionada actualmente.
Todo funciona en la primera ejecución: se cambian las tablas, se muestran las columnas, el cuadro combinado reacciona cuando se agregan, cierran o renombran las tablas.
Estoy usando suscripción a tablas para eso.
Tras cerrar la ventana de la interfaz gráfica y reiniciar el script, recibo errores aleatorios relacionados con símbolos no definidos (se está ejecutando una nueva instancia). Al iniciar, sigue ejecutando fragmentos de código de la instancia anterior en lugares aleatorios y no encuentra las variables definidas en esos fragmentos.
Hago clic en Aceptar en la ventana emergente de error y lo ejecuto nuevamente: el script funciona normalmente.
Aquí está mi función Cerrar ventana:
onWindowCloseExpr = Expr( Write("\!nRunning on window close expression"); For Each({_dt, _index}, (data:tablesListAA << Get Values), Close(_dt, NoSave); ); Unsubscribe to Data Table List( aSub ); Clear Symbols(); Stop(); );
Agregué Clear Symbols() y Stop() mientras intentaba solucionar el problema, para asegurarme de que el script se detenga y todo se borre.
¿Alguna idea de qué está pasando y cómo solucionarlo?