其实这个问题发在找答案了,但是需要讨论添加一些信息,所以还是发到这里来吧。
问题的起因是在于 西门子触摸屏建立的 数组变量,不可设置上下限(范围那一栏不可用), 而我正好有180个数据。 客户需要这些数据在超过范围时对应的IO域背景色改变。 常规的做法是这180个数据不用数组,直接建立180个变量! 然后每个变量单独设置范围! 可是这做法太LOW了!而且万一客户需求变化呢?
然而我建立数组后又遇到了数组不可设置范围的问题,所以打算采用脚本来实现,两个办法,其中之一就是用脚本判断每个变量超过上限就将它对应的IO域底色设置成红色,低于下限就将对应的IO域底色设置成黄色,在正常范围就将底色设为白色,以此来间接实现超范围变底色的功能。
假设我在一画面里(画面名称:数据画面),放置了这180个变量(是数组变量,对应的IO域名称为ac1~ac180),写了一个测试的简易脚本:
Dim i
i = 1
HmiRuntime.Screens("数据画面").ScreenItems.Item("ac" & CStr(i)).BackColor = vbGreen
运行结果提示画面找不到IO域ac1
可是改成直接指定的方式就可以
HmiRuntime.Screens("数据画面").ScreenItems.Item("ac1").BackColor = vbGreen
只有将IO域名称动态化指定,我才可能使用For Next循环改变i值轮询180次, 否则得同样的代码写180次!那还不如直接建立180个变量得了!