使用wincc做弹框,一般的做法是做N多的子画面,再使用窗口画面显示。如果数量少的话还好说,如果数量特别的多,那么如果要修改起来就特别的麻烦(尤其是同一类的弹框)。
做弹框也有用结构变量做的。个人没有研究,我使用了下面的这一种方法,感觉比较方便。
一、建立中间变量,弹窗中需要显示几个就建立几个变量,我这里需要3个8位无符号变量)如图:
三个变量分别对应value_Temp_1对应阀门的开关动作,value_Temp_2对应阀门开反馈,value_Temp_3对应阀门关反馈。
二、画面如下图:右上角的三个输入输出域连接三个变量,同时设置为隐藏。属性设置如下:
开启关闭按钮直接连接变量。
三、在主画面添加一个窗口画面控件,记住控件名,设置为可移动其他不需要设置。
四、在需要控制的画面图形文件上打开属性, --》事件--》鼠标--》释放左键--》C动作。插入下列代码:
图片一的代码的主要作用是:读取鼠标当前的位置,并赋值给窗口画面,同时判断鼠标在最右边或最下面是将画面窗口偏移一段距离,不要显示到画面外面去。
图片二的代码的主要作用就是我们需要的内容:
setpropchar 弹框标题显示的文字是什么
settext 子画面中静态文本需要显示的内容,图示中一行显示位号,一行显示中文描述
SetTagChar 关键的地点,将子画面中的中间变量替换为实际变量,图示中的“Value_Temp_1"为第一步中建立的中间变量,“A01_valve"是建立的过程连接变量。
五、代码复制
POINT myPoint;
GetCursorPos(&myPoint);
printf("%d/%d\r\n", myPoint.x, myPoint.y);
SetLeft("工艺图.pdl","画面窗口3",myPoint.x );
SetTop("工艺图.pdl","画面窗口3",myPoint.y);
SetVisible("工艺图.pdl","画面窗口3",TRUE); //Return-Type: BOOL
SetText("设置.pdl","静态文本1","我爱你"); //Return-Type: BOOL
SetTagChar("Empty1_1","I11FC"); //Return-Type: BOOL
SetTagChar("Empty1_2","I11FC_H"); //Return-Type: BOOL
SetTagChar("Empty1_3","I11FC_L"); //Return-Type: BOOL
SetTagChar("Empty1_4","I11FC_HA"); //Return-Type: BOOL
SetTagChar("Empty1_5","I11FC_LA"); //Return-Type: BOOL
以上方法在实际应用中实现。
楼主最近还看过