winccOA的画面操作权限, 一般是坐在Initialize脚本中,但是这个方法有个弊病, 就是在线切换用户, 画面控件的enabled不变; 或者坐在控件的click事件中, 但是只能点击哪个,更新哪个。
我的思路是, 在全局脚本中生成当前用户的授权状态,做成一个双字dp。一组相关的画面控件, 可以关联一个授权dp值。 在Initialize实践中, 将当前用户授权状态双字dp通过dpConnect注册到回调函数, 状态双字dp变化就调用回调函数;在回调函数中, 比较当前授权状态和控件关联的授权dp值, 对enabled进行更新。
然后将控件做成Object, 授权dp坐车参数$name. 这样就不用操心授权更新的问题了。
否则,我感觉每个单独处理,确实很繁琐。
这个当前用户的授权状态, 用全局脚本获取, 或者可能有个内部变量, 这个我不太清楚。 我只是提出一个我的思路。这个思路,我分析是当前主流HMI的通用做法, 只是隐藏了实现细节。
顺便吐槽一下,winccOA是有一种开放式的, 搞IT开发的感觉。 但是, 又有一种得自己造轮子的窘迫。 也许, 随着应用的增多, 各种用户自定义库, 自定义object的增多, 会越来越好用。就像c#那样。