<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有哪些怪癖?