Lokale Variable zum Schließen des Fensters erforderlichIch versuche, mehrere Fenster zu generieren und die Schließen-Schaltfläche jedes einzeln schließen zu lassen.Allerdings funktioniert es nicht so wie ich es erwartet habe.Versuchen Sie, den Code 2x auszuführen; Die Schaltfläche "Schließen" funktioniert für ein Fenster, aber nicht für das andere.
::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)
);


GrafikSkripterstellungBetreff: Lokale Variable zum Schließen des Fensters erforderlichDanke David!Schöne saubere Lösung.
Betreff: Lokale Variable zum Schließen des Fensters erforderlichSobald das Skript die Ausführung beendet hat, ist die nw-Variable außerhalb des Gültigkeitsbereichs.
Ich bevorzuge diesen Ansatz:
::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", currentReport() << close window)
);Betreff: Lokale Variable zum Schließen des Fensters erforderlichIhr Code schlägt fehl, da beim zweiten Ausführen des Skripts die Variable „nw“ so geändert wird, dass sie auf das neueste Fenster zeigt.Grundsätzlich besteht das Problem darin, dass der Namensraum „Here“ mit dem Skriptfenster verknüpft ist und nicht jede der Instanzen, die über das Skriptfenster ausgeführt werden.Mein Code erstellt einfach jedes Mal eine neue Variable, wenn der Code ausgeführt wird.
Was die doppelten Unterstriche betrifft, so ist es nur ein Standard, den ich verwende.Ich finde, dass es beim Lesen und Verstehen hilft, wie der Code funktioniert.
Betreff: Lokale Variable zum Schließen des Fensters erforderlichDanke Jim, das funktioniert.Aber zwei Fragen:
1. Warum funktioniert deine und meine nicht?
2. Es scheint, dass Sie __nw__ einer zufälligen Ganzzahl zuweisen, aber es ist bereits "Fensterhandle".Überschreibt das nicht den Wert des Fensterhandles?
Als Bonusfrage, warum all die doppelten Unterstriche?Code funktioniert gut ohne sie.
Betreff: Lokale Variable zum Schließen des Fensters erforderlichHier ist, wie ich damit umgehen würde
::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 ) ) )
)
);