6.1 前言
这两天有网友问,画面上如果有N多按钮需要做,怎么做简单一些,碰巧前段时间帮朋友做了一个项目,里面有个类似的要求,要求是这样的:画面上有好几十个图片,每个图片代表一个设备,鼠标放上去之后能够显示该设备的名称、状态等。这位网友的要求差不多,不过之前的那个我是用VBS实现的,而且还是有些繁琐,这位网友要用C脚本做,这里试着实验一下。
6.2 要求
画面上有N多按钮如附图:
为了减小图片大小,做9个按钮作为示例
为了编辑简单,减少工作量,总结有这样的要求:
1) 按钮上需要显示不同的问题,文本为”骨仓XX#”,XX为编号0-200
2) 点击按钮,弹窗显示“确认选择仓位XX吗”,点击是,把XX送入变量bin_select里面
3) 增加按钮的时候,只复制粘帖,然后根据需要排布位置,改一下按钮对象编号即可。
6.3 实现方法
利用WinCC在复制粘帖对象时,会自动把对象名称的最后的数字自动加1(如果对象是从1开始,不是从1开始的,那可能就自动变成1或者1不重复的数字),这样利用脚本获取按钮对象的对象名称,然后把编号获取出来,再进行字符串拼接,就能实现这个功能。
按钮对象取名按”BT_GC_1”为”骨仓1#”开始,至”BT_GC_9”为”骨仓9#”
bin_select变量为内部无符号32位整数,用来防止点击按钮之后的编号。
为方便脚本修改,脚本在全局脚本的项目函数里面写。思路主要就是获取按钮对象名称比如:”BT_GC_1”,然后查找”_”符号,把最后面的数字给提取出来,然后再根据需要连接字符串等操作。
详细脚本如下:
6.3.1 按钮文本的相关脚本
按钮脚本:
函数脚本:
6.3.2 按钮动作:
鼠标动作脚本:
其函数脚本:
6.4 测试图
6.5 补充点
这个主要是用于做项目的时候,有多个类似多项的时候用,而且需要对脚本有一定的了解,按钮里面的脚本组态完全一样,做好一个按钮,其他的复制粘帖就好了,特别是编号能连续起来,如果不能连续起来的话,那就后期删除用不到的对象,或者手动改成需要的编号,能减少不少重复的操作,其他的功能比如打开不同的画面,修改其他的属性,也一样能实现,具体就是修改函数脚本了。
由于C脚本不是很熟悉,在字符串截取的时候,费了挺长时间,而且也不知道采用的是不是最好的方案。个人对VBS更熟悉一些,实现起来可能也能更简单点。
后面再附上VBS的脚本吧
我没怎么做过项目,具体的客户需求了解的还是不多。如果你还有别的需求,可以留言讨论。