Serve una variabile locale per chiudere la finestraSto cercando di generare più finestre e chiedere al pulsante di chiusura di chiuderle separatamente.Tuttavia non funziona come mi aspettavo.Prova a eseguire il codice 2x; il pulsante di chiusura funziona per una finestra ma non per l'altra.
::a = "The quick fox jumped over the brown log";
::b = "Hello World I want to get off now";
names default to here(1);
nw = new window("Test",
text box(::a),
text box(::b),
button box("Close", nw << close window)
);


GraficaScriptingRi: Hai bisogno di una variabile locale per chiudere la finestraEcco come lo gestirò
::a = "The quick fox jumped over the brown log";
::b = "Hello World I want to get off now";
Names Default To Here( 1 );
Eval(
Substitute(
Expr(
__nw__ = New Window( "Test",
Text Box( ::a ),
Text Box( ::b ),
Button Box( "Close", __nw__ << close window )
)
),
Expr( __nw__ ),
Parse( "nw" || Char( Random Integer( 1, 999999999 ) ) )
)
);Ri: Hai bisogno di una variabile locale per chiudere la finestraGrazie Jim che funziona.Ma due domande:
1. Perché il tuo funziona e non il mio?
2. Sembra che tu stia assegnando __nw__ a un numero intero casuale, ma è già "window handle".Non sovrascrive il valore della sua finestra?
Come domanda bonus perché tutti i doppi trattini bassi?Il codice funziona bene senza di loro.
Ri: Hai bisogno di una variabile locale per chiudere la finestraIl tuo codice fallisce, perché la seconda volta che esegui lo script, la variabile "nw" viene modificata in modo che punti alla finestra più recente.Fondamentalmente, il problema è che lo spazio dei nomi "Here" è associato alla finestra dello script, non a ciascuna delle istanze eseguite dalla finestra dello script.Il mio codice crea solo una nuova variabile ogni volta che il codice viene eseguito.
Per quanto riguarda i doppi trattini bassi, è solo uno standard che uso.Trovo che aiuti a leggere e capire come funziona il codice.