在ifix项目中,实际上会用到点击按钮弹出按钮菜单,点击另一按钮弹出另一按钮菜单的情况。一般在使用过程中切换菜单可有如下两种普遍做法:
1.使用ClosePicture “Middle",0 关闭当前画面,OpenPicture "***.grf”,"Middle","",""打开新画面(比如上述的按钮菜单画面)
2.使用切换画面命令 replacePicture "***.grf","Middle","",0
如下图所示:
当使用上述两种方法时,会出现一个问题,当点击系统拓扑图,或者历史报警等其余项目时,一二期监控按钮又变成了可点击状态,但是一二期按钮栏未退出,当再次点击一二期监控按钮时就会报错:诸如,"点击的画面已打开”之类的错误
解决方法:
利用新建全局变量isopen作为标志点。将一二期监控,和三期监控按钮做切换动作,保证当按其他按钮时,不执行replacepicture操作。
代码如下:
Private Sub 三期按钮_Click()
closepicture "MIDDLE"
If user.isOpen.CurrentValue = 0 Then
replacepicture "三期按钮栏.grf", "MIDDLE1", "", 0
user.isOpen.CurrentValue = 1
End If
End Sub
Private Sub 一二期按钮_Click()
closepicture "MIDDLE"
If user.isOpen.CurrentValue = 1 Then
replacepicture "二期按钮栏.grf", "MIDDLE1", "", 0
user.isOpen.CurrentValue = 0
Else
user.isOpen.CurrentValue = 0
End If
End Sub
经测试,有效的解决了上述bug,作为记录。
注:(2018-05-03)
上述方法并不是个很好的方法,使用原先的简单方法即可解决此问题。
修改如下:
二期按钮;
closepicture "MIDDLE"
openpicture "test.grf","MIDDLE","",""//打开一个按钮栏中的默认画面,放置MIDDLE别名下无画面。
openpicture "二期按钮栏.grf", "MIDDLE1", "", ""
三期按钮;
closepicture "MIDDLE"
openpicture "test1.grf","MIDDLE","",""//打开一个按钮栏中的默认画面,放置MIDDLE别名下无画面。
openpicture "三期按钮栏.grf", "MIDDLE1", "", ""