S31-WinCC单个窗口多次调用
我的老粉丝看官们都知道,我在S22文章中写了画面实例和普通画面模板的应用。虽然方便,但是它依然是需要你建立多个实例,或者画面窗口的。接下来我们一起搞一个另类弹出面板窗口,来解决这个问题。文末附有原脚本。

先看上面的效果,仔细点的看官们可能也没有看出哪里不一样是吧?是的,它效果和普通画面窗口是一样的。但是组态的时候只需要建立一个画面窗口即可。对,就是只有一个。感兴趣的随小编继续走。

第一步,老规矩,当时是准备变量。要具有标准格式的前后缀功能,方便后面的使用。

第二步,打开画面编辑器,进行我们的主要工作。我们拖出来一个画面窗口,同类型的只需要一个就行。只更改对象名称就行。或者不改记下来也可以的,其它无需任何操作。

尤其是我们习惯加上前缀或者页眉之类的,是都不需要的。我们以之前做过的仪表窗口为例进行讲解测试。加上3个按钮分别把文本命名“仪表1/2/3”。

第三步,就是打开准备的模板窗口,连接变量就行。只连接后缀就行,不对赘述。

第四步,在每个按钮添加如图脚本,我们在脚本中定义窗口名称,变量前缀。还有获取按钮文本,用作窗口页眉显示。3个仪表都调用这个一个窗口,只需要更改脚本中变量前缀即可。
到这里就结束了。如果您的项目中,同类型设备数量非常之多,不妨可以试试这类方法。但是注意这个面板只能打开一个,不能同时打开两个同类型面板。而且操作时候最好关闭第一个面板再去打开第二个面板。介意的小伙伴慎用哦。
下面是示例原C脚本:
SetPictureName (lpszPictureName,"新仪表窗口","仪表模板1");
SetTagPrefix(lpszPictureName,"新仪表窗口","仪表1");
SetVisible (lpszPictureName, "新仪表窗口",1);
SetPropChar (lpszPictureName, "新仪表窗口", "CaptionText", GetText(lpszPictureName,lpszObjectName));
SetLeft(lpszPictureName,"新仪表窗口",x);
SetTop(lpszPictureName,"新仪表窗口",y);
