搬家第一天-23.Wincc V7.3 复选框使用C语言控制趋势显示和隐藏

我们在使用Wincc趋势控件的时候,有时候希望趋势的显示和隐藏不通过趋势控件的“组态对话框”来设定,而通过复选框进行设置,这样更加直观,便于操作。下面就介绍如何实现这种功能。

1. 假设一个趋势控件里面有32个变量的趋势要显示出来,那么我们先在趋势控件中添加进去这32个趋势,把数值轴时间轴设定好,还可以在工具栏上不显示“组态对话框”按钮。

2.变量管理里面新建两个内部32位无符号数变量,pows,result

3. 画面上加入一个复选框按钮,修改名字为ctrlCheckbox,属性-几何-框数量设定为32,属性-字体中分别编辑好这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 i;
for (i=0;i<=31;i++)  //因为有32个趋势,所以是0到31,如果趋势没那么多,修改相应数字就是了。
{
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); //则使其不显示
}
}

posted @ 2021-01-29 16:25  来自金沙江的小鱼  阅读(1731)  评论(1编辑  收藏  举报