需要牢记的概念是何时从iFIX中启动窗体是模式化(modal)的或无模式化(modeless)。如果窗体是模式化(modal)的,当显示时,无法使用主应用程序。与之相反的是,如果为无模式化(modeless)的,即使当显示时,仍可以使用主应用程序。
如果从iFIX内部的VBA脚本启动模块窗体,那么在用户能继续操作iFIX之前(包括选择菜单、工具栏、画面对象等),必须先响应这个窗体,只有窗体隐藏或退出之后,后续代码才能执行。当窗体是无模式化时,所有后续代码都可以在需要时执行。
警告:不要从同一个窗体内或该窗体内的任何控件中卸载窗体, 而是从窗体内部调用隐藏的方法,再从主程序中卸载窗体。
无模式窗体不在任务栏中,也不在windows标签列表中。调用一个无模式化窗体,使用下列代码:
userForm1.Show vbModeless
注意:如果对一个无模式用户窗体UserForm做修改而导致它被重新编译,可能会丢失与之相关的数据。例如,删除某个代码模块。
当使用无模式窗体时,如果不想让用户退到工作台,可以使用DeActivateWorkspaceUI,它能屏蔽工作台UI。有关详细内容,请参看iFIX自动化电子书中的DeActivateWorkspaceUI 方法主题。
如果插入一个报警一览(Alarm Summary)对象到某个VBA窗体,那么当打开该画面或从运行模式切换到编辑模式时可能会导致意想不到的后果。