WINCC中组合框的使用
通过组合框切换当前界面。
Sub OnObjectChanged(Byval Item)
If item.SelIndex = 1 Then
HMIRuntime.BaseScreenName = "Monitor1-0"
End If
If item.SelIndex = 2 Then
HMIRuntime.BaseScreenName = "Monitor2-0"
End If
If item.SelIndex = 3 Then
HMIRuntime.BaseScreenName = "Monitor1-1"
End If
If item.SelIndex = 4 Then
HMIRuntime.BaseScreenName = "Monitor1-2"
End If
If item.SelIndex = 5 Then
HMIRuntime.BaseScreenName = "Monitor1-3"
End If
If item.SelIndex = 6 Then
HMIRuntime.BaseScreenName = "Monitor1-4"
End If
If item.SelIndex = 7 Then
HMIRuntime.BaseScreenName = "Monitor2-1"
End If
If item.SelIndex = 8 Then
HMIRuntime.BaseScreenName = "Monitor2-2"
End If
If item.SelIndex = 9 Then
HMIRuntime.BaseScreenName = "Monitor2-3"
End If
If item.SelIndex = 10 Then
HMIRuntime.BaseScreenName = "Monitor2-4"
End If
End Sub
通过组合框选择给内部变量ComboxIndex变量赋值
Sub OnObjectChanged(Byval Item)
If item.SelIndex =1 Then
HMIRuntime.Tags("ComboxIndex").Write "1"
End If
If item.SelIndex =2 Then
HMIRuntime.Tags("ComboxIndex").Write "2"
End If
If item.SelIndex =3 Then
HMIRuntime.Tags("ComboxIndex").Write "3"
End If
MsgBox HMIRuntime.Tags("ComboxIndex").Value 消息盒子
End Sub
组合框改变画面窗口
Sub OnObjectChanged(Byval Item)
Dim objPicWindow
'MsgBox "ready"
Set objPicWindow = ScreenItems("画面窗口1")
'MsgBox "ok"
'objPicWindow.ScreenName = "pic2"
'MsgBox "really?"
If item.SelIndex = 1 Then
objPicWindow.ScreenName = "picinpic1"
End If
If item.SelIndex = 2 Then
objPicWindow.ScreenName ="picinpic2"
End If
If item.SelIndex = 3 Then
objPicWindow.ScreenName ="picinpic3"
End If
'MsgBox HMIRuntime.Tags("ComboxIndex").Value
'
End Sub
别人程序:
Dim NowNum
Dim TagPrefix
On Error Resume Next '遇到错误自动跳转到下一行,防止画面其他的脚步被卡死
NowNum = HMIRuntime.Tags("NowPictureNum").Read '读取内存变量值
If (nownum < 1)Or (nownum >20) Then '容错处理
HMIRuntime.Tags("NowPictureNum").Write 1
NowNum = 1
End If
TagPrefix = "AHU" & NowNum
ScreenItems("Mod").TagPrefix = TagPrefix '定义画面上的画面窗口[Mod]的变量前缀为AHU1~AHU20
Select Case NowNum
Case 1,2,3,4,5,8 '当内存变量值为1~5,8 时[Mod]的画面名称为AHUMod01
ScreenItems("Mod").ScreenName = "AHUMod01"
Case 10 '当内存变量值为10 时[Mod]的画面名称为AHUMod02
ScreenItems("Mod").ScreenName = "AHUMod02"
Case 6,7,11,12 '当内存变量值为6,7,11,12时[Mod]的画面名称为AHUMod03
ScreenItems("Mod").ScreenName = "AHUMod03"
Case 13,14
ScreenItems("Mod").ScreenName = "AHUMod04"
Case 15,16,17,18
ScreenItems("Mod").ScreenName = "AHUMod05"
Case Else '当内存变量值不为上述值时[Mod]的画面名称为AHUMod06
ScreenItems("Mod").ScreenName = "AHUMod06"
End Select
代码的作用就是:
把当前画面上,名称为[Mod]的画面窗口控件的变量前缀根据内存变量NowPictureNum的值赋值为"AHU1"~"AHU12",把画面名称
赋值为"AHUMod01"~"AHUMod06"。
也就是你说的,通过改变内存变量NowPictureNum的值,从而使[Mod]调用不同的模版"AHUMod01"~"AHUMod06"。
上面的代码是WinCC的VBS代码,希望你看得懂吧。
要使用上面的代码,先在窗口拖放一个[矩形]控件,并且把[矩形]控件的"激活闪烁背景"属性设置为'是',再到[矩形]控件的"其他"-"对象改变"事件里面添加上述的VBS脚本。
浙公网安备 33010602011771号