首页 > 技术文章 > 搬家第一天-7.winccV7.3使用复选框C脚本显示和隐藏趋势

fishingsriver 2021-01-29 11:21 原文

wincc上放置趋势控件ctrlTrend,显示32个趋势;放置一个复选框ctrlCheckbox,有32个选项(几何-框数量属性),在复选框事件-属性主题-输出输入-选择框-更改中,写入如下C脚本:

 

#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,  long value)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END

double process,pows;
DWORD process1,pows1,result;
//int RetMsg;
int i;
for (i=0;i<=31;i++)
{
pows=pow(2,i);
process=GetPropDouble(lpszPictureName,"ctrlcheckbox","Process");
process1=(DWORD)process;
pows1=(DWORD)pows;
SetTagDWord("pows",pows1); //把2的i次方赋值给trendtag32
result=process1&GetTagDWord("pows");//按位做与运算
SetTagDWord("result",result); //把运算结果赋值给result
SetPropDouble(lpszPictureName,"ctrltrend","TrendIndex",i); //选定曲线i
if (GetTagDWord("result")!=0)
SetPropBOOL(lpszPictureName,"ctrltrend","TrendVisible",TRUE); //则使其显示
else
SetPropBOOL(lpszPictureName,"ctrltrend","TrendVisible",FALSE); //则使其不显示
}
}

 画面打开事件添加以下脚本:

#include "apdefap.h"
void OnOpenPicture(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int i;
for (i=0;i<=31;i++)
{
SetPropDouble(lpszPictureName,"ctrlTrend","TrendIndex",i); //选定曲线i
SetPropBOOL(lpszPictureName,"ctrlTrend","TrendVisible",FALSE); //则使其不显示
}
}

//这个脚本对在线趋势的classic版本无效,应该是部分属性的写法不一样,需要注意。

推荐阅读