Come chiudere le tabelle corrette con "Alla chiusura" quando si esegue lo stesso script più volte?Ciao,
Ho un componente aggiuntivo che genera un grafico con diverse tabelle nascoste in background.
Dopo aver chiuso la finestra utilizzo la funzione "On Close" per chiudere le tabelle di dati correlate, in questo modo:
New window() << On close(
Close(TableA, nosave);
Close(TableB, nosave);
) ;
Il problema è che se eseguo lo script due volte, la Tabella A della prima esecuzione verrà sovrascritta durante la seconda esecuzione dello script.
Ho provato ad aggirare il problema utilizzando un ID univoco creato ad ogni avvio dello script, in questo modo:
NewWindow() << On Close(
For(i = NItems(GetWindowList() << Get Window Title()), i > 0, i--,
win = GetWindow((GetWindowList() << Get Window Title())[i]);
If(Contains(win << get window title, Eval(uniqueID)) != 0,
win << closewindow()
);
)
)
Purtroppo rimane lo stesso problema, UniqueID viene sovrascritto.
Esiste un modo per fare riferimento correttamente alle tabelle in modo che la chiusura della finestra chiuda le tabelle corrette?
Grazie in anticipo per il vostro aiuto!
Automazione e scriptingRi: Come chiudere le tabelle corrette con "Alla chiusura" quando si esegue lo stesso script più volte?Valuta le tabelle al tuo On Close
Eval(EvalExpr(
New Window() << On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
));
Ri: Come chiudere le tabelle corrette con "Alla chiusura" quando si esegue lo stesso script più volte?Come funziona: nel tuo esempio originale,
New window() << On close(
Close(TableA, nosave);
Close(TableB, nosave);
) ;
TableA e TableB sono variabili che contengono puntatori alle tabelle. Se sono presenti più istanze, le variabili puntano all'ultima istanza assegnata.
Nell'esempio @jthi ,
Eval(EvalExpr(
New Window() << On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
));
il tuo script viene preelaborato dal codice Eval(EvalExpr( ... Expr(...) ) ) per sostituire la variabile con il suo valore. Ciò rende lo script non più dipendente dalla variabile corrente della variabile perché la chiamata a close() ora utilizza un valore costante (ottenuto dalla variabile molto prima).
Come leggerlo: EvalExpr(...) esamina i suoi argomenti per Expr(...) e li valuta, lasciando il risultato valutato al posto di Expr(). Al termine, EvalExpr restituisce un'espressione che deve ancora essere valutata per eseguire il metodo OnClose(...).
È importante posizionare i marcatori Expr(...) nel posto giusto; la parte che deve essere scolpita nella pietra è proprio il valore della variabile. Se utilizzi Expr(close(tableA,nosave)), ad esempio, la funzione close() verrebbe eseguita troppo presto.
Ri: Come chiudere le tabelle corrette con "Alla chiusura" quando si esegue lo stesso script più volte?Incredibile, grazie mille!
Ri: Come chiudere le tabelle corrette con "Alla chiusura" quando si esegue lo stesso script più volte?Grazie Craige per le spiegazioni, molto utili! Ho generalizzato questo e sono felice che le tabelle corrette vengano chiuse alla chiusura della finestra.
Ho ancora un problema che probabilmente è in qualche modo correlato: su queste finestre ho impostato gli script di menu per consentire il drill-down, ora chiamano gli argomenti corretti grazie alla funzione Eval(EvalExpr(...Expr(...))) codice. Tuttavia definisco variabili all'interno di questi script a scopo di manipolazione dei dati e non so come evitare che vengano sovrascritte: esiste un modo per dichiarare queste variabili come locali in questo script?
Esempio:
Eval(
EvalExpr(
NewWindow("Example", Outline = OutlineBox("Add-ins", Tabs = TabBox())) <<
On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
)
);
Outline << Set Menu Script(
{"Script1", Eval(EvalExpr(Add_in_table = Expr(TableA) << Subset(Selected Rows))) ;
// some code
TableD = Add_in_table << Summary(...) ;
Eval(
EvalExpr(
NewWindow(Graph builder()) << OnClose(
Try(Close(Expr(Add_in_table), nosave));
Try(Close(Expr(TableD), nosave));
)
)
)}
);Grazie
Ri: Come chiudere le tabelle corrette con "Alla chiusura" quando si esegue lo stesso script più volte?Nomi predefiniti qui(1); all'inizio dello script o magari utilizzando l'ambito della finestra (o box). La Guida allo scripting contiene alcune informazioni relative agli spazi dei nomi e agli ambiti
Puoi spostarti su pagine diverse dal menu a sinistra

o frecce in alto a destra
