描述
使用多屏功能时会产生一个问题,就是函数(比如SetBackColor)中只会定义画面名(lpszPictureName)和对象名(lpszObjectName)。因此,如果使用了多屏功能,函数中没有明确定义,也就无法定义是哪个屏上的画面。 n
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetBackColor("system.pdl","storage_tank",CO_RED); // background color
}n
如果用户希望在所有屏上执行某个动作,需要输入以下C脚本动作:n
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetBackColor("@SCREEN.@WIN12:@1001.@DESK:system.pdl","storage_tank",CO_RED); // background color
SetBackColor("@SCREEN.@WIN22:@1001.@DESK: system.pdl","storage_tank",CO_RED); // background color
}
通过输入这两行命令(针对2个屏幕的),能够使得SetBackColor在两个显示屏上都执行。@WIN12指的是Monitor1,@WIN22指的是Monitor2。通过这种方式,画面"system.pdl"的函数就可以指定在某个显示屏上执行了。n
如果希望在WinCC运行画面中使用多于两个显示屏,并且希望同一张画面在两个屏上打开,这会出现触发的一个C脚本,例如通过在一个屏幕上点击鼠标,脚本却在另外一个屏幕上执行。n
比如,执行C函数SetVisible,并指到某画面名(比如 "Picture1.PDL",...),那么实际是指到多屏中最先打开的那张画面。如果想特定指到当前画面,那么就必须用指针指过去:n
SetVisible(IpszPictureName,...);n
如果希望在画面中通过点击一个退出按钮来关闭画面窗口,需要采用以下C脚本:n
SetVisible(GetParentPicture(IpszPictureName), "picture_window_xyz", 0);n
可以在全局脚本的STANDARD functionsGRAPHICSGetParentPicture中找到GetParentPicture。n
背景
这种情况下,IpszPictureName指向了打开的画面窗口,但是此画面窗口是集成在其母窗口中的。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc332064.html