<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />它並不像你想像的那麼容易。 由於某種原因,您無法在創建過程中發送“<< Set Window Icon()”命令。 通常情況下這很好,因為您可以立即將命令發送到窗口。 像這樣:
NW = 新窗戶 ( “測試” , << 語氣 ,文本框 ( “測試” )) ;
NW << 設置窗口圖標 ( “$ SAMPLE_IMAGES / pi.gif” ) ;
然而,當談到模態窗口時,我們遇到了一些有趣的問題。 首先,模態窗口阻止任何進一步的腳本運行,直到用戶與模態窗口交互。 這通常意味著當我們發送設置窗口圖標命令時,窗口已經關閉。 為了解決這個問題,我們可以安排發送命令,將來0秒。 這樣做,它告訴JMP盡快發送命令,當你停止運行其他命令時,AKA。 由於模態窗口將停止腳本繼續,因此它將在窗口顯示後立即生效。 這對我們的意圖是完美的。
從上面你可能認為好的,我只是安排它,把代碼放在窗口創建上面,我們很好嗎?
時間表 ( 0 , NW << 設置窗口圖標 ( “$ SAMPLE_IMAGES / pi.gif” )) ;
NW = 新窗戶 ( “測試” , << 語氣 ,文本框 ( “測試” )) ;
錯誤!
看到這個問題是在響應模態窗口之前不會創建nw對象。 與其他窗口不同,nw對像不包含對顯示窗口的引用,而是設置為存儲由模態窗口發送給它的數據對象。 在大多數情況下,這將是{Button = -1}或{Button = 1},具體取決於您是單擊“確定”還是“取消”。 因此,要解決這個問題,我們需要一個可以發送命令的顯示對象。 文本框可以工作,但我選擇將其包裝在列錶框中並將其發送到那裡。
因此我們得到(經過一點點重構):
iconFunction僅 = 功能 ({ 框 ,路徑 } ,
框 << 設置窗口圖標 ( 路徑 ) ;
) ;
小號 = 時間表 ( 0 , iconFunction僅 ( VLB , “$ SAMPLE_IMAGES / pi.gif” )) ;
報告 ( 小號 ) << 櫥窗 ( 0 ) ;
NW = 新窗戶 ( “測試” , << 語氣 , VLB = vlistbox ( 文本框 ( “測試” ))) ;
這只是我今天遇到的一個有趣的JSL怪癖。 你最喜歡的JSL有哪些怪癖?