Salir correctamente de un complementoEstoy escribiendo un complemento para operar en la tabla de datos actual (). Quiero que el complemento se cierre correctamente sin hacer nada si:
(a) no hay tabla de datos actuales ()
o
(b) la tabla de datos actuales tiene <2 columnas.
Parece que no puedo hacer que esto suceda. Instalé el complemento y miré el archivo .jmpcust que se generó. Arriba, en la parte superior de la secuencia de comandos, donde el comentario dice "Las variables y funciones declaradas aquí tienen como alcance el espacio de nombres de la aplicación", observo este código:
dt = Current Data Table();
If(Is Empty(dt),
Quit Application()
);
Quit Application = Function({},
Current Window() << Close Window;
Throw()
)que *creo* fue insertado por Application Builder (y no por mí).
Parecería correcto para lograr (a), pero en cambio, mi complemento avanza en ausencia de una Tabla de datos actual () y abre su ventana de diálogo.
¿Alguien me puede ayudar?
secuencias de comandosRe: Salir correctamente de un complementoTraté de depurar eso en el editor de secuencias de comandos y cerró el editor sin guardar. No me di cuenta de lo que sucedió hasta que lo volví a hacer y lo ejecuté de nuevo.La función debe definirse antes de llamarla, por lo que parece fuera de servicio.
Nunca he usado el generador de aplicaciones. Hago este tipo de control a nivel de script, justo antes de que se llame a la GUI. Básicamente, mis scripts se ven así:
1. cosas iniciales arriba
2. Función de guión principal
3. asigne dt y decida continuar con la GUI o no
4. GUI, donde el botón Aceptar llama a la función de secuencia de comandos.
Así es como busco una tabla de datos. Puede usar una versión modificada de esto y también verificar ncol (dt)> = 2.
dtData = current data table();
try(dtData << get name, throw(New Window("No Data Table Found",<<MODAL></MODAL>
Re: Salir correctamente de un complementoCreo que encontré una solución mientras tanto mirando una de las publicaciones de txnelson. En el script de la aplicación, puse:
If( N Table() == 0,
Throw( "Add-in requires an open data table." )
);
dt = Current Data Table();
If( N Cols( dt ) < 2,
Throw(
"Add-in requires a table with at least two columns."
)
);