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脚本。

posted @ 2021-01-30 10:02  Ivanxie  阅读(2753)  评论(0)    收藏  举报