搬家第一天-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); //則使其不顯示
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM