广东湘恒智能科技有限公司
主营产品: 西门子PLC代理商,plc变频器,伺服电机,人机界面,触摸屏,线缆,DP接头
SIEMENS西门子广西省玉林市(授权)电机一级代理商——西门子华南总代理


二次确认对话框



在WinCC中,为了避免误操作,一些关键的按钮通常会需要进行二次确认。二次确认窗口一般都是调用Windows系统窗体。比如我们可以通过脚本msgbox来调用系统对话框。


在上图中,当点击按钮时会弹出一个询问是否确认操作的对话框。该对话框有两个按钮,可以选择确定或者取消。只有当点击确定按钮时才可以继续下一步操作。


这种调用系统对话框的方法简单易用,但是欠缺灵活性。另外在界面风格上和我们的项目也显得格格不入,所以在一些场景下可能还是需要我们自定义二次确认对话框。比如下图就是我们的HwBasicLib4CWCC中的WinCC退出确认对话框。


在自定义的确认对话框中,我们首先要制作对话框需要展示的画面信息。下图是我们定义的一个名为_Exit的退出确认对话框。


当用户点击“取消”按钮时窗口关闭。脚本如下:




Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)    item.Parent.Parent.Visible=falseEnd Sub当用户点击“确定”按钮时退出WinCC,脚本如下:




Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)    HMIRuntime.StopEnd Sub

上面的自定义弹窗虽然实现了目标功能,但是缺乏通用性。我们总不能为每个需要二次确认的操作都去制作一个窗口吧。为了实现确认对话框的通用性,我们对窗口进行了一些改造。在调用对话框时传递三个参数进去,分别是警告信息文本、指令和值。参见下面的脚本。














Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)                   Dim pw    Set pw=ScreenItems("PW10")    pw.ScreenName="HwLib.Framework\BaseLib\ConfirmWindows"    pw.UserData="你确定要更改参数xxx的设置?*TagName*NewVlue"    PW.Left=item.Left+item.Width    pw.Top=item.Top    pw.Height=260    pw.Width=560    pw.CaptionText="警告"    pw.BorderEnabled=True    pw.Visible=TrueEnd Sub


上面脚本的核心内容是通过窗体的属性UserData传递参数到确认对话框中。然后我们在对话框中对传递进来的UserData进行解析。










Dim udDim txtIf Len(item.Parent.Parent.UserData)>0 Then   ud=Split(item.Parent.Parent.UserData,"*")Else   Exit FunctionEnd If
item.Text=ud(0)

上面的代码是对传递进来的UserData数据进行解析,并将其的第一个数据赋值给静态文本控件,用于显示警告信息。


如果点击取消按钮则关闭窗体。反之如果点击的是确定按钮,则根据第二个参数和第三个参数执行相应的动作。

自定义的二次确认窗口相比系统对话框更加灵活,界面也更加美观。


展开全文
相关产品
拨打电话 微信咨询 发送询价