<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Es ist nicht so einfach, wie Sie denken. Aus irgendeinem Grund können Sie den Befehl "<< Set Window Icon ()" während des Erstellungsprozesses nicht senden. Normalerweise ist dies in Ordnung, da Sie den Befehl direkt danach an das Fenster senden können. So wie:
nw = Neues Fenster ( "Prüfung" . << Modal . Textfeld ( "Prüfung" )) ;
nw << Fenstersymbol einstellen ( "$ SAMPLE_IMAGES / pi.gif" ) ;
Bei modalen Fenstern stoßen wir jedoch auf einige interessante Themen. Erstens verhindert das modale Fenster, dass weitere Skripts ausgeführt werden, bis der Benutzer mit dem modalen Fenster interagiert. In der Regel bedeutet dies zu dem Zeitpunkt, zu dem wir den Befehl Set Window Icon senden können, dass das Fenster bereits geschlossen ist. Um dies zu umgehen, können wir den Sendebefehl für 0 Sekunden in die Zukunft einplanen. Was dies tut, ist, dass es JMP anweist, den Befehl so schnell wie möglich zu senden, auch wenn Sie keine anderen Befehle mehr ausführen. Da das modale Fenster die Fortsetzung des Skripts stoppt, befindet es sich direkt nach der Anzeige des Fensters. Welches ist perfekt für unsere Absicht.
Von den oben genannten Dingen magst du gut denken, ich werde es einfach einplanen, den Code über die Fenstererstellung setzen und wir sind gut?
Zeitplan ( 0 . nw << Fenstersymbol einstellen ( "$ SAMPLE_IMAGES / pi.gif" )) ;
nw = Neues Fenster ( "Prüfung" . << Modal . Textfeld ( "Prüfung" )) ;
FALSCH!
Sie sehen das Problem damit, dass das nw-Objekt erst erstellt wird, nachdem auf das modale Fenster geantwortet wurde. Im Gegensatz zu anderen Fenstern enthält das nw-Objekt keinen Verweis auf das Anzeigefenster, sondern ist so eingerichtet, dass es das Datenobjekt speichert, das vom modalen Fenster an es gesendet wird. Meistens ist dies {Button = -1} oder {Button = 1}, je nachdem, ob Sie "Ok" oder "Abbrechen" drücken. Um dieses Problem zu lösen, benötigen wir ein Anzeigeobjekt, an das der Befehl gesendet werden kann. Das Textfeld würde funktionieren, aber ich entschied mich dafür, es in ein Listenfeld zu packen und es dort zu senden.
So erhalten wir (nach ein wenig Refactoring):
iconFunktion = Funktion ({ Box . Pfad } .
Box << Fenstersymbol einstellen ( Pfad ) ;
) ;
s = Zeitplan ( 0 . iconFunktion ( vlb . "$ SAMPLE_IMAGES / pi.gif" )) ;
Bericht ( s ) << Schaufenster ( 0 ) ;
nw = Neues Fenster ( "Prüfung" . << Modal . vlb = vlistbox ( Textfeld ( "Prüfung" ))) ;
Dies war nur ein interessanter Spruch von JSL, auf den ich heute gestoßen bin. Was sind einige Ihrer Lieblingsmerkmale von JSL?