客户要求实现输入框二次弹窗的确认。但是不用“MessageBox”函数,因为MessageBox弹出后,不点击 “确认”或“取消”的话,背后画面中的按钮就操作不了。特别是在CS架构中,客户端和服务器都在操作同一个按钮和输入框的时候。
目前的办法是通过画面窗口去实现二次弹窗的确认,通过解析父窗口的变量前缀,然后拼接成实际的变量名称实现二次弹窗的确认。
一:IO域名的组态:
1 此IO域的组态_输出/输入组态:
2 此IO域名的对象名称组态:
此IO域名的对象名称和输出值关联变量一致,便于将对象名取出后,进行拼接实际变量A1_HV01_MAN。
3 此IO域名的键盘释放的事件脚本:
二 :二次弹窗的组态:
1 二次弹窗的画面打开脚本:
以上脚本执行完后,实现的效果是将IO域输入的50.0,在二次弹窗打开的时候,这个50.0传递到二次弹窗打开后的IO域“IOConfirm”里边。效果如下图所示:
2 二次弹窗的IO域“IOConfirm”的组态:
二次弹窗的IO域“IOConfirm”没有组态,只是为了传递数据用。
3 二次弹窗的确认按钮的组态:
上图中的红色标注1~7是通过GetParentPicture和GetParentPictureWindow获得三级窗口的前缀,最终为了获得最终需要修改的变量A1_HV01_MAN
第8句是触发自定义报警记录,报警编号12000000
第9句是将二次弹窗的IO域“IOConfirm”的值赋值到tag5,也就是实际变量A1_HV01_MAN
三级窗口的父子关系:
如上图所示,最里边的Confirm_IO_2.Pdl就是二次确认弹窗。相邻外围的IO域
是运行时,需要输入修改值的地方。例如在此IO域输入50.0并确认后,就会弹出二次确认弹窗Confirm_IO_2.Pdl,在二次弹窗里边再去确认或取消。