WINCC 弹出控制框

WINCC上要求 点击每个阀门 每个点击 弹出一个控制方框 (对泵和阀门进行开关,状态指示)

建好结构变量后

在鼠标左键里,选择VBS动作:

Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)

Dim PIC

Set PIC = ScreenItems("画面窗口1")'选择画面窗口

PIC.Visible = False

PIC.Left = x +10

PIC.Top = Y '使窗口移动到鼠标位置

PIC.TagPrefix = "TAG_6."' 定义变量前缀

PIC.Visible = True

 

如此的虔诚,让人感动,应该得到回报!我也提供一些关于结构变量,并在指定位置弹出窗口的C脚本给你参考一下,希望对你有些帮助,其实最主要的还是要你自己再去研究一下哦。

#include "apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

SetPropChar(lpszPictureName,"popbox2","CaptionText","标题栏的内容");//注:popbox2是父窗口的Picturewindow

SetTagPrefix(lpszPictureName,"popbox2","结构变量的前缀.");//对结构变量赋前缀

OpenPicturewindowoffset(lpszPictureName,lpszObjectName,"popbox2","要弹出显示的通用画面.pdl",0,0);//二次开发的项目函数,定义弹出窗口的位置,并判断弹出的位置

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

二次开发的项目函数如下:

#include "apdefap.h"

void OpenPicturewindowoffset(char* lpszPictureName, char* lpszObjectName, char* PicturewindowName,char* PinPName, int Pinpwidth,int Pinpheight)

{

int left,top,objwidth,picwidth,picheight;

struct CC_POINT

{

int iLeft;

int iTop;

};

struct CC_POINT posObject;

picwidth=900;

picheight=700;

left=GetLeft(lpszPictureName,lpszObjectName);

top=GetTop(lpszPictureName,lpszObjectName);

objwidth=GetWidth(lpszPictureName,lpszObjectName);

if(left+objwidth+Pinpwidth<picwidth){

posObject.iLeft = left +objwidth+10;

}

else posObject.iLeft = left -Pinpwidth-10;

if(top+Pinpheight+80>picheight){

posObject.iTop = picheight-Pinpheight-30;

}

else posObject.iTop = top ;

SetLeft(lpszPictureName,PicturewindowName,posObject.iLeft);

SetTop(lpszPictureName,PicturewindowName,posObject.iTop);

SetPictureName(lpszPictureName,PicturewindowName,PinPName);

SetVisible(lpszPictureName,PicturewindowName,TRUE); //Return-Type :BOOL

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

在一个大型的项目中 一个大型的项目中 一个大型的项目中 一个大型的项目中 可能 会需要控制 会需要控制 会需要控制 几十 个阀门或者 个阀门或者 十几个 十几个 电 机类,这些阀门或者电控制方式都是相同的。 机类,这些阀门或者电控制方式都是相同的。 机类,这些阀门或者电控制方式都是相同的。 机类,这些阀门或者电控制方式都是相同的。 机类,这些阀门或者电控制方式都是相同的。 机类,这些阀门或者电控制方式都是相同的。 机类,这些阀门或者电控制方式都是相同的。 机类,这些阀门或者电控制方式都是相同的。 如果 我们为每一个 我们为每一个 我们为每一个 阀门 或者 电机 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 都制作一个控面板来,也是可以的只工过 程要繁琐些。 程要繁琐些。 下面 介绍 2种控制方法,第 控制方法,第 控制方法,第 一种是为每个阀门或者 一种是为每个阀门或者 一种是为每个阀门或者 一种是为每个阀门或者 一种是为每个阀门或者 电机配置一个 控制画面,第二种是作电机配置一个 控制画面,第二种是作电机配置一个 控制画面,第二种是作电机配置一个 控制画面,第二种是作电机配置一个 控制画面,第二种是作电机配置一个 控制画面,第二种是作电机配置一个 控制画面,第二种是作通用 的控制画面,然后 的控制画面,然后 的控制画面,然后 的控制画面,然后 在主画面中 在主画面中 通过 C脚本 调用这个画面。 用这个画面。 用这个画面。
### 关于WinCC中创建弹出窗口的具体步骤 在WinCC环境中创建弹出窗口可以通过多种方式进行配置,具体取决于使用的WinCC版本以及期望达到的功能效果。对于希望实现简单弹窗提示的情况,可以利用内置的消息框函数`MessageBox()`来快速构建用户交互界面[^4]。 #### 使用消息框作为简单的弹出窗口 为了展示如何使用消息框,在脚本编辑器内编写如下VBS代码片段: ```vbscript ' 显示带有自定义文本的信息对话框 Call MessageBox("这是一条测试信息", "提示") ' 或者更复杂的选项组合 Dim result As Integer result = MessageBox("确实要执行该操作吗?", vbYesNo + vbQuestion, "确认") If result = vbYes Then ' 用户选择了“是” Else ' 用户选择了“否” End If ``` 上述例子展示了基本的消息显示逻辑,适用于不需要复杂布局的小型通知场景。 #### 利用画面切换模拟弹出窗口行为 当需求涉及到较为复杂的UI设计时,则推荐采用多层页面叠加的方式来模仿传统意义上的模态对话框。按照描述中的指导思路,先建立两个独立的画面文件:“pic1”为主视图,“pic2”则充当待唤起的次级面板[^3]。 ##### 动作触发机制设定 - **按钮事件绑定**:选定目标控件(比如命令按钮),为其关联特定的动作响应——即调用隐藏/显现另一张图片的方法。 ```javascript // JavaScript 示例用于控制第二个图像对象 (ID=Image2) 的可见状态 if (!this.oParent.Image2.Visible){ this.oParent.Image2.Visible = true; } else { this.oParent.Image2.Visible = false; } ``` 这种做法不仅限定了视觉上的呈现形式,同时也确保了良好的用户体验流程管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值