Besoin d'une variable locale pour fermer la fenêtreJ'essaie de générer plusieurs fenêtres et que le bouton de fermeture ferme chacune séparément.Cependant, cela ne fonctionne pas comme je m'y attendais.Essayez d'exécuter le code 2x; le bouton de fermeture fonctionne pour une fenêtre mais pas pour l'autre.
::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)
);


GraphiqueScriptingRe: Besoin d'une variable locale pour fermer la fenêtreVoici comment je le gérerais
::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 ) ) )
)
);Re: Besoin d'une variable locale pour fermer la fenêtreMerci Jim qui fonctionne.Mais deux questions:
1. Pourquoi le vôtre fonctionne-t-il et pas le mien?
2. Il semble que vous affectez __nw__ à un entier aléatoire, mais c'est déjà un "handle de fenêtre".Cela ne remplace-t-il pas sa valeur de handle de fenêtre?
En prime, pourquoi tous les doubles soulignements?Le code fonctionne bien sans eux.
Re: Besoin d'une variable locale pour fermer la fenêtreVotre code échoue, car la deuxième fois que vous exécutez le script, la variable «nw» est modifiée pour pointer vers la dernière fenêtre.Fondamentalement, le problème est que l'espace de noms "Ici" est associé à la fenêtre de script, et non à chacune des instances exécutées à partir de la fenêtre de script.Mon code crée simplement une nouvelle variable à chaque fois que le code est exécuté.
Concernant les doubles traits de soulignement, c'est juste un standard que j'utilise.Je trouve que cela aide à lire et à comprendre comment le code fonctionne.