Quitter correctement un complémentJ'écris un complément pour fonctionner sur la table de données actuelle (). Je veux que le complément se ferme normalement 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émentVoulez-vous dire que vous voudriez que le script s'arrête sans aucun retour à l'utilisateur ? Si c'est le cas, remplacez throw("info text") par stop() et le script s'y terminera. J'imagine que cela fonctionnerait de la même manière dans le script d'application, mais je n'ai jamais travaillé avec cela.
Re : Quitter gracieusement un complémentMais je serais toujours intéressé de savoir comment lancer () sans provoquer l'apparition d'une boîte de dialogue d'erreur. Je pense que le récent message de txnelson aborde ce problème, mais je ne comprends pas ce qu'il fait et comment il fonctionne.
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."
)
);
Re : 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>