在图形编辑器中使用VBA可在组态期间自动执行经常发生的步骤。可以创建用户定义的菜单和工具栏,以便更加容易地执行所创建的VBA宏。
在图形编辑器中,基本上可以使用VBA宏来取代其他情况下用鼠标执行的所有组态工作,这尤其适用于GUI(层和缩放)以及画面中对象的编辑(包括动态化)。
VBA在图形编辑器中的Application对象模型如图10-24所示。
图10-24 VBA对象模型
在图形编辑器中,VBA可实现以下功能,如图10-25所示。
图10-25 VBA功能分类
下面通过几个实例来说明如何在图像编辑器中使用VBA。
1.使用VBA进行语言设置
使用VBA,可以在图形编辑器中针对多种不同的语言执行组态,这样就可以访问图形编辑器中与语言相关的对象属性,还可以使用户定义的菜单和工具栏以不同的语言显示。在VBA中,外文文本存储在类型为“LanguageTexts”的列表中,与语言相关的字体设置存储在类型为“LanguageFonts”的列表中。
(1)用户界面语言
如果不使用VBA,则只能在WinCC中切换到其他桌面语言。在WinCC中切换桌面语言时,会触发“DesktopLanguageChanged”事件,可以通过替换与语言相关的工具图标来调整用户定义的菜单和工具栏,以满足用户需要。
下列对象以及与语言相关的关联属性会对用户界面语言的切换进行响应。
1)FolderItem对象。
2)Menu对象和MenuItem对象。
3)ToolbarItem对象。
(2)项目语言
可以使用“CurrentDataLanguage”属性来更改项目语言。
【例10-14】将组态语言更改为“英语”。
所有与语言相关的属性(如ToolTipText)均会受到此更改的影响。
(3)使用VBA针对多种语言进行组态
可以通过以下两种方式,使用VBA对多种语言进行组态。
1)语言切换:对象的文本属性。
可以使用VBA来更改与语言相关的对象属性(例如“Text”)。为此,应将文本分配给相应的属性,然后更改组态语言,以使用其他语言来分配文本。
2)LanguageTexts列表:用户定义的菜单和工具栏以及对象的文本属性。
可以将各个对象的多语言文本直接保存在类型为“LanguageTexts”的关联列表中。为此,应输入该语言的语言ID及相关文本。
WinCC文档(“索引”→“语言ID”)中提供了语言代码的完整列表。
【例10-15】为按钮“myButton”分配德语标签和英语标签。
2.自定义菜单和工具栏
(1)图形编辑器中用户定义的菜单和工具栏
可以使用图形编辑器中的用户定义菜单和工具栏来执行VBA宏。应用程序特定的菜单和工具栏与画面特定的菜单和工具栏之间有所不同,并且具有以下属性:
1)应用程序特定的菜单/工具栏:图形编辑器打开时始终可见。以下情况下应使用应用程序特定的菜单和工具栏:通过这类菜单和工具栏执行的VBA宏必须能够随时可供用户访问。
2)画面特定的菜单/工具栏:与特定的画面相关,只要画面可见,此类菜单/工具栏就保持可见。当所用的VBA宏仅与特定画面相关时,应使用画面特定的菜单和工具栏。
(2)用户定义的菜单和工具栏的定位
对于用户定义的菜单,“Position”参数决定其在菜单栏中的最终位置。但是,应用程序特定的菜单始终位于图形编辑器中“窗口(Window)”菜单的右侧,而画面特定的菜单始终位于图形编辑器中“帮助(Help)”菜单的左侧。(www.xing528.com)
如图10-26所示,首先插入画面特定的菜单和工具栏,然后再插入应用程序特定的菜单和工具栏。
图10-26 用户定义的菜单和工具栏
(3)用户定义的菜单和工具栏的属性
对于用户定义的菜单和工具栏,可以用连字符来分隔条目,例如,根据某些类别进行分隔。此外,还可以在用户定义的菜单中创建子菜单。
以下组态选项可用于用户定义的菜单和工具栏(及其条目):
1)可见(是/否):显示或隐藏该项(Visible属性)。
2)激活(是/否):激活条目或使条目变暗(Enabled属性)。
3)用复选标记进行标记(是/否):仅对菜单项适用(Checked属性)。
4)快捷键:用于调用菜单项的组合键(ShortCut属性)。
5)状态文本:显示在状态栏中的文本(StatusText属性)。
6)工具提示文本:仅对图标适用(ToolTipText属性)。
例如,如果无法在某一时间执行宏,则可隐藏菜单项,这样就可以避免出现意外的错误操作。
可以用多种语言为用户定义的菜单和工具栏创建所有文本和标签,以便用户定义的菜单和工具栏也可以对语言切换进行响应。
【例10-16】创建新的应用程序特定的菜单
即使关闭了图形编辑器中的所有画面,应用程序特定的菜单也会保持可见。例如,可以使用“Started”事件在早期插入应用程序特定的菜单,可将VBA代码置于“GlobalTemplateDocument”中(如果希望该菜单在所有项目中都可用),或者置于“ProjectTemplateDocument”中(如果希望该菜单在当前项目中可用)。
1)在图形编辑器中打开VBA编辑器(<ALT>+<F11>或“工具”→“宏”→“Visual Basic编辑器”(“Tools”→“Macros”→“Visual Basic Editor”))。
2)在项目管理器中,打开要在其中编写VBA代码的文档。
3)如果要在图形编辑器中创建用户定义的菜单,则可在文档中插入“CreateApplication Menus()”过程。以下示例创建了两个用户定义的菜单:
4)使用<F5>启动过程。
经过以上步骤,“App_Menu_1”和“App_Menu_2”这两个菜单被插入“窗口(Window)”菜单的右侧。如图10-27所示。
图10-27 用户自定义菜单
【例10-17】为菜单添加新菜单条目
可以在用户定义的菜单中插入三种不同类型的菜单项:
1)菜单条目:用于调用VBA宏。
2)分隔线:使用户定义菜单的设计更加清晰。
3)子菜单:与用户定义的菜单相同(例如命令构建)。
另外,“Position”参数用于确定菜单项在用户定义菜单中的顺序,“Key”参数是菜单项的唯一标识。如果使用“MenuItemClicked”事件调用VBA宏,则使用此参数。
1)在图形编辑器中打开VBA编辑器(<ALT>+<F11>或“工具”→“宏”→“Visual Basic编辑器”(“Tools”→“Macros”→“Visual Basic Editor”))。
2)在项目管理器中,打开要在其中编写VBA代码的文档。
3)如果要在以前创建的用户定义菜单中创建菜单项,则可在文档中插入“InsertMenuItems()”过程。以下程序在用户定义的菜单“App_Menu_1”中创建若干个菜单项:
4)使用<F5>启动过程。
完成以上步骤之后,“InsertMenuItems()”过程将这些菜单项插入菜单“App_Menu_1”中,如图10-28所示。
图10-28 新建“菜单项”
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。