Quitter correctement un complémentJ'écris un complément pour fonctionner sur la table de données actuelle (). Je souhaite que le complément se ferme correctement sans rien faire si :
(a) il n'y a pas de tableau de données actuel ()
ou
(b) le tableau des données actuelles a <2 colonnes.
Je n'arrive pas à faire en sorte que cela se produise. J'ai installé le complément et regardé le fichier .jmpcust qui a été généré. Tout en haut du script où le commentaire dit "Les variables et les fonctions déclarées ici sont étendues à l'espace de noms Application", je note ce code :
dt = Current Data Table();
If(Is Empty(dt),
Quit Application()
);
Quit Application = Function({},
Current Window() << Close Window;
Throw()
)qui je * pense * a été inséré par Application Builder (et non par moi).
Cela semblerait être juste pour accomplir (a), mais à la place, mon complément charge à l'avance en l'absence d'une table de données actuelle () et ouvre sa fenêtre de dialogue.
Est-ce que quelqu'un peut m'aider?
ScriptRe : Quitter gracieusement un complémentJ'ai essayé de déboguer cela dans l'éditeur de script et il a fermé l'éditeur sans enregistrer. Je n'ai pas réalisé ce qui s'était passé jusqu'à ce que je l'ai refait et l'ai exécuté à nouveau.La fonction doit être définie avant d'être appelée, ce qui semble hors d'usage.
Je n'ai jamais utilisé le générateur d'applications. Je fais ce genre de contrôle au niveau du script, juste avant l'appel de l'interface graphique. En gros mes scripts ressemblent à :
1. trucs initiaux en haut
2. Fonction de script principale
3. attribuez dt et décidez de passer à l'interface graphique ou non
4. GUI, où le bouton ok appelle la fonction de script.
Voici comment je vérifie une table de données. Vous pouvez utiliser une version modifiée de ceci et également vérifier ncol(dt) >= 2.
dtData = current data table();
try(dtData << get name, throw(New Window("No Data Table Found",<<MODAL></MODAL>
Re : Quitter gracieusement un complémentJe pense avoir trouvé une solution entre-temps en regardant l'un des messages de txnelson. Dans le script de l'application, j'ai mis :
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."
)
);