<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />思ったほど簡単ではありません。 何らかの理由で、作成プロセス中に "<< Set Window Icon()"コマンドを送信できません。 通常、これは問題ありません。直後にコマンドをウィンドウに送信することができるからです。 そのようです:
nw = 新しい窓 ( "テスト" 、 << モーダル 、テキストボックス ( "テスト" )) ;
nw << ウィンドウの設定アイコン ( "$ SAMPLE_IMAGES / pi.gif" ) ;
しかし、モーダルウィンドウに関しては、いくつか興味深い問題があります。 まず、モーダルウィンドウは、ユーザーがモーダルウィンドウと対話するまで、それ以上のスクリプトが実行されないようにします。 これは通常、Set Window Iconコマンドを送信できるようになるまでに、ウィンドウがすでに閉じられていることを意味します。 これを回避するために、将来0秒間、sendコマンドをスケジュールすることができます。 これが何をするのか、それはあなたが他のコマンドの実行を停止したときに、できるだけ早くコマンドを送るようにJMPに指示するということです。 モーダルウィンドウはスクリプトの続行を中止するため、ウィンドウが表示された直後に表示されます。 これは私たちの意図にぴったりです。
上から、あなたは大丈夫だと思うかもしれません、私はただそれをスケジュールして、ウィンドウ作成の上にコードを置くでしょう、そして我々は良いですか?
スケジュール ( 0 、 nw << ウィンドウの設定アイコン ( "$ SAMPLE_IMAGES / pi.gif" )) ;
nw = 新しい窓 ( "テスト" 、 << モーダル 、テキストボックス ( "テスト" )) ;
違う!
これに関する問題を見てください。モーダルウィンドウが応答されるまでnwオブジェクトが作成されないということです。 他のウィンドウとは異なり、nwオブジェクトは表示ウィンドウへの参照を含まず、代わりにモーダルウィンドウによって送信されたデータオブジェクトを格納するように設定されています。 ほとんどの場合、これはあなたが "Ok"を押したか "Cancel"を押したかに応じて{Button = -1}または{Button = 1}になります。 したがって、この問題を解決するには、コマンドを送信できる表示オブジェクトが必要です。 テキストボックスは機能しますが、私はそれをリストボックスで囲み、そこに送信することにしました。
したがって、(少しリファクタリングした後に)
iconFunction = 関数 ({ ボックス 、パス } 、
ボックス << ウィンドウの設定アイコン ( パス ) ;
) ;
の = スケジュール ( 0 、 iconFunction ( vlb 、 "$ SAMPLE_IMAGES / pi.gif" )) ;
報告書 ( の ) << ウィンドウを表示 ( 0 ) ;
nw = 新しい窓 ( "テスト" 、 << モーダル 、 vlb = vlistbox ( テキストボックス ( "テスト" ))) ;
これは私が今日遭遇したJSLのちょっとした興味深い話です。 JSLの好きな癖は何ですか?