Uscire con grazia da un componente aggiuntivoSto scrivendo un componente aggiuntivo per operare su Current Data Table(). Voglio che il componente aggiuntivo esca con grazia senza fare nulla se:
(a) non esiste una tabella dati corrente()
o
(b) la tabella dati corrente ha <2 colonne.
Non riesco a far sì che ciò accada. Ho installato il componente aggiuntivo e ho esaminato il file .jmpcust che è stato generato. Nella parte superiore dello script in cui il commento dice "Variabili e funzioni dichiarate qui sono nell'ambito dello spazio dei nomi dell'applicazione", noto questo codice:
dt = Current Data Table();
If(Is Empty(dt),
Quit Application()
);
Quit Application = Function({},
Current Window() << Close Window;
Throw()
)che *penso* sia stato inserito da Application Builder (e non da me).
Sembrerebbe giusto per realizzare (a), ma invece il mio componente aggiuntivo si carica in anticipo in assenza di una tabella dati corrente () e apre la sua finestra di dialogo.
Qualcuno mi può aiutare?
SceneggiaturaRe: Uscire con grazia da un componente aggiuntivoHo provato a eseguire il debug nell'editor di script e ha chiuso l'editor senza salvare. Non mi sono reso conto di cosa fosse successo finché non l'ho rifatto e l'ho eseguito di nuovo.La funzione dovrebbe essere definita prima di essere chiamata, in modo che sembri fuori ordine.
Non ho mai usato il generatore di applicazioni. Eseguo questo tipo di controllo a livello di script, appena prima che venga chiamata la GUI. Fondamentalmente i miei script sembrano:
1. roba iniziale in alto
2. Funzione di script principale
3. assegnare dt e decidere di procedere alla GUI o meno
4. GUI, dove il pulsante ok richiama la funzione di script.
Ecco come controllo una tabella di dati. Potresti usare una versione modificata di questo e anche controllare ncol(dt) >= 2.
dtData = current data table();
try(dtData << get name, throw(New Window("No Data Table Found",<<MODAL></MODAL>
Re: Uscire con grazia da un componente aggiuntivoPenso di aver trovato una soluzione nel frattempo guardando uno dei post di txnelson. Nello script dell'applicazione metto:
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."
)
);