WinCC画面图层的显示和隐藏

最近在逛西门子论坛时,发现一个有趣的功能,可以通过脚本对画面的图层进行隐藏和显示,不过该帖子只显示了 简单的脚本代码,本着实践是学习的最好方法。我进行了实际操作,并增加了新的功能。下面是我实际操作的步骤和总结

将整个画面作为对象,然后修改对象的属性方法,实现画面图层的隐藏显示

  1. 如何将整个画面作为对象

  2. 画面中图层号和脚本中索引值的关系

  3. 画面图层随机显示

条目 描述
软件版本 wincc7.5 SP1

创建项目

  1. 打开wincc 7.5 Advance软件,创建对应的项目,项目名称为LayerVisible。

  2. 创建变量.先创建变量组Function,然后创建两个变量(红色框框),其他变量为其他画面用到的,不用于此项目画面。

  3. 创建画面,画面名称为Layer01,切记此画面名称,后面创建画面对象时,需要用到。

按钮列表

对象 对象名称 数量 描述
图形对象控件 默认 1 显示图片
静态文本 默认 2 显示画面名称和图层颜色介绍
按钮 默认 9 控制图层的隐藏/显示
矩形 默认 6 6个矩形处于画面的6个图层,通过颜色区分

按钮描述

按钮名称 作用
图层1 点击此按钮,隐藏其他五个矩形,只显示红色矩形
图层2 点击此按钮,隐藏其他五个矩形,只显示蓝色矩形
图层3 点击此按钮,隐藏其他五个矩形,只显示黄色矩形
图层4 点击此按钮,隐藏其他五个矩形,只显示绿色矩形
图层5 点击此按钮,隐藏其他五个矩形,只显示紫色矩形
图层6 点击此按钮,隐藏其他五个矩形,只显示白色矩形
红绿黄 点击此按钮,隐藏其他三个矩形,显示红绿黄三个颜色的矩形
蓝白紫 点击此按钮,隐藏其他三个矩形,只显示蓝白紫三个颜色的矩形
随机 点击此按钮,隐藏其他五个矩形,显示一个随机颜色的矩形

按钮脚本

图层1

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01') '获取画面对象,Set VisibleOn = HMIRuntime.Tags('VisibleOn') '获取变量VisibleOn.Write 1 '变量值写1If VisibleOn.Value = 1 Then '逻辑判断 Sobj.Layers(1).visible = True '显示图层0 Sobj.Layers(2).visible = False '隐藏图层1 Sobj.Layers(3).visible = False Sobj.Layers(4).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElse Sobj.Layers(1).visible = FalseEnd If

图层2

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01')Set VisibleOn = HMIRuntime.Tags('VisibleOn')VisibleOn.Write 2If VisibleOn.Value = 2 Then   Sobj.Layers(1).visible = False  Sobj.Layers(2).visible = True  Sobj.Layers(3).visible = False  Sobj.Layers(4).visible = False  Sobj.Layers(5).visible = False  Sobj.Layers(6).visible = FalseElse   Sobj.Layers(2).visible = FalseEnd If 

图层3

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01')Set VisibleOn = HMIRuntime.Tags('VisibleOn')VisibleOn.Write 3If VisibleOn.Value = 3 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = False Sobj.Layers(3).visible = True Sobj.Layers(4).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElse Sobj.Layers(3).visible = FalseEnd If

图层4

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01')Set VisibleOn = HMIRuntime.Tags('VisibleOn')VisibleOn.Write 4If VisibleOn.Value = 4 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = False Sobj.Layers(3).visible = False Sobj.Layers(4).visible = True Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElse Sobj.Layers(4).visible = FalseEnd If

图层5

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01')Set VisibleOn = HMIRuntime.Tags('VisibleOn')VisibleOn.Write 5If VisibleOn.Value = 5 Then   Sobj.Layers(1).visible = False  Sobj.Layers(2).visible = False  Sobj.Layers(3).visible = False  Sobj.Layers(4).visible = False  Sobj.Layers(5).visible = True  Sobj.Layers(6).visible = FalseElse   Sobj.Layers(5).visible = FalseEnd If

图层6

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01')Set VisibleOn = HMIRuntime.Tags('VisibleOn')VisibleOn.Write 6If VisibleOn.Value = 6 Then   Sobj.Layers(1).visible = False  Sobj.Layers(2).visible = False  Sobj.Layers(3).visible = False  Sobj.Layers(4).visible = False  Sobj.Layers(5).visible = False  Sobj.Layers(6).visible = TrueElse   Sobj.Layers(6).visible = FalseEnd If

红绿黄

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01')Set VisibleOn = HMIRuntime.Tags('VisibleOn')VisibleOn.Write 7If VisibleOn.Value = 7 Then Sobj.Layers(1).visible = True Sobj.Layers(2).visible = False Sobj.Layers(3).visible = True Sobj.Layers(4).visible = True Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElse Sobj.Layers(1).visible = False Sobj.Layers(3).visible = False Sobj.Layers(4).visible = FalseEnd If

蓝白紫

Dim SobjDim VisibleOnSet Sobj = hmiruntime.Screens('Layer01')Set VisibleOn = HMIRuntime.Tags('VisibleOn')VisibleOn.Write 8If VisibleOn.Value = 8 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = True Sobj.Layers(3).visible = False Sobj.Layers(4).visible = False Sobj.Layers(5).visible = True Sobj.Layers(6).visible = TrueElse Sobj.Layers(2).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseEnd If

随机

Dim SobjSet Sobj = HMIRuntime.Screens('Layer01')HMIRuntime.Tags('ColorNumber').Write MyRnd(1,6)
Msgbox HMIRuntime.Tags('ColorNumber').ReadIf HMIRuntime.Tags('ColorNumber').Read = 1 Then Sobj.Layers(1).visible = True Sobj.Layers(2).visible = False Sobj.Layers(3).visible = False Sobj.Layers(4).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElseif HMIRuntime.Tags('ColorNumber').Read = 2 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = True Sobj.Layers(3).visible = False Sobj.Layers(4).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElseif HMIRuntime.Tags('ColorNumber').Read = 3 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = False Sobj.Layers(3).visible = True Sobj.Layers(4).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElseif HMIRuntime.Tags('ColorNumber').Read = 4 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = False Sobj.Layers(3).visible = False Sobj.Layers(4).visible = True Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseElseif HMIRuntime.Tags('ColorNumber').Read = 5 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = False Sobj.Layers(3).visible = False Sobj.Layers(4).visible = False Sobj.Layers(5).visible = True Sobj.Layers(6).visible = FalseElseif HMIRuntime.Tags('ColorNumber').Read = 6 Then Sobj.Layers(1).visible = False Sobj.Layers(2).visible = False Sobj.Layers(3).visible = False Sobj.Layers(4).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = True Else Sobj.Layers(1).visible = False Sobj.Layers(2).visible = False Sobj.Layers(3).visible = False Sobj.Layers(4).visible = False Sobj.Layers(5).visible = False Sobj.Layers(6).visible = FalseEnd If

在使用随机按钮时,需要先创建项目函数MyRnd(min,max),此函数会出现一个随机函数,min代表随机数的下限,max为上限,产生的随机数为int型。

(0)

相关推荐

  • EXCEL强制启用宏的实现

    如果,EXCEL禁用了宏,那么,我们制作的很多功能就不能实现了.为此,必须要求启用宏. 首先,当然是在工作薄里添加一个名为"启用宏"的工作表,写上些内容,提示如何启用宏. 其次,在 ...

  • CSS控制DIV层显示和隐藏的实现方法

    本文给大家带来了CSS控制DIV层显示和隐藏的方法,是前端学习必须要掌握的基础知识,非常不错,具有参考借鉴价值,感兴趣的小伙伴一起学习吧 CSS中的display和visibility属性 css中d ...

  • 工作表的显示与隐藏、深度隐藏

    日常工作中我们发给别人报表,有些工作表不希望别人看到,但又不想删掉,点击工作表标签,右键,选择"隐藏",工作表就隐藏了,相反如果选择"取消隐藏"就可以看到隐藏的 ...

  • 山石的立体及阴阳向背和连绵起伏,画面方能显示变化无常呢!三

    山石的立体及阴阳向背和连绵起伏,画面方能显示变化无常呢!三

  • 显示我的电脑隐藏图标

    还记得在Windows 98我的电脑里那几个实用图标吗?虽然后来的Windows系统里这些图标都没有了,但还是有办法显示出来的,方法如下: 1.按下"Windows+R"键,打开运 ...

  • excel 自定义名称的显示和隐藏方法

    有时,在excel自定义名称之后,单击名称管理器查看,就是找不到excel自定义名称. 如果遇到无法查看excel自定义名称,可以借用下面代码试试. 方法是,按ALT+F11,打开VBE编辑器,插入- ...

  • word中显示和隐藏功能区的方法

    在编辑word文档的时候,有时候为了尽量增大屏幕显示正文的范围,我们需要隐藏word界面上方的功能区以增大显示空间.功能区的隐藏以及显示操作步骤如下: 1.隐藏.隐藏功能区常用的方法有以下两种,读者根 ...

  • 如何显示或隐藏Mac电脑右上角的声音图标

    mac电脑菜单栏上大的声音图标如何显示(隐藏)呢?这里小编为大家带来了详细的显示或隐藏Mac电脑右上角的声音图标教程,让电脑用起来更加顺手,效率更加高效.需要的小伙伴们欢迎收藏吧! 方法一 点击左上角 ...

  • 怎么在word表格中显示和隐藏表格中的虚线框

    --------------------------------------------------------------------------- word中的表格虚线框打印出来是不会显示的,使用 ...

  • 教程 | CATIA草图绝对轴的显示和隐藏方法

    可以通过二次开发实现批量的显示和隐藏哦,以后有机会讲--