Come rilevare se una casella didascalia è stata chiusa?Ciao!
Ho uno script che scorre le celle dei dati ed esegue l'elaborazione dei dati.
Per dare all'utente un'idea di quale cella sta attualmente elaborando, aggiungo questa riga:
Caption("Processing "||Char(i)||" out of "||Char(Nrows(dtmed))||" Cells...");Ad ogni modo, se chiudo la didascalia, lo script procede semplicemente all'iterazione successiva. Quello che voglio è che lo script termini se l'utente chiude la casella della didascalia. Forse c'è qualche funzione che mi darà lo stato della casella didascalia se fosse chiusa?
Comunque, l'ultima risorsa è questa discussione:
https://community.jmp.com/t5/Discussions/Jsl-How-can-i-stop-a-script-with-a-button/td-p/6787
Anche se sono preoccupato di avere due finestre (una casella didascalia e una finestra) solo per avere un pulsante di fuga.
Grazie per l'aiuto.
Re: Come rilevare se una casella didascalia è stata chiusa?Potresti prendere in considerazione l'utilizzo di 'OnClose()' per fare le pulizie fintanto che tieni traccia dei tavoli:
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = NewWindow("Using 'On Close'", << onClose(onCloseBlock), TextBox("Close Me"));
onCloseBlock =
Expr(
Print("Closing table "||(dt << getName));
Close(dt, NoSave);
);Re: Come rilevare se una casella didascalia è stata chiusa?@ian_jmp
l'ho fatta così:
CheckBlock=Expr (
stattb<<SETTEXT></SETTEXT>In qualche modo, il pulsante Annulla non sta facendo il suo lavoro, penso di averlo inserito in modo errato all'interno dello script.
Hm, sfortunatamente, l'interruzione anormale del pulsante (X) lascia molte tabelle di dati invisibili.
Sto ancora controllando come affrontarlo.
Grazie per l'aiuto.
Re: Come rilevare se una casella didascalia è stata chiusa?Grazie! Lasciami controllare come posso adattare questo al mio script attuale.
Re: Come rilevare se una casella didascalia è stata chiusa?Sembra che tu non possa inviare messaggi a "Caption()" per manipolarlo.
Adattando ciò che è nell'altro thread, potresti provare qualcosa come:
NamesDefaultToHere(1);
nw = NewWindow("Stop script",
tb = TextBox("Press 'Run'... \!n"),
bb1 = ButtonBox("Run", runScript),
bb2 = ButtonBox("Cancel", stopFlag = 1),
);
nw << setWindowSize(150, 120);
runScript =
Expr(
bb1 << enable(0);
stopFlag = 0;
for(i=1,i<=100, i++,
Wait(1);
if(stopFlag,
// Stop . . .
nw << closeWindow;
Print("Stopped after "||Char(i)||" seconds.");
Stop(),
// Else update display . . .
tb << setText("Counted for "||Char(i)||" seconds.")
);
);
nw <<CLOSEWINDOW></CLOSEWINDOW>