使用WINCC库中的阀门、电机等图标,单击他们弹出操作的对话框,现在的问题是弹出的对话框是在鼠标点击的位置附近出来,但是点击监控画面边缘的图标时发现,弹出的对话框超出了画面的边缘,还得用鼠标拖拽回来,(因为是改造项目,原制作者在PLC中的地址不规律,无法用结构变量,只能把阀门的操作对话框逐一制作出来,我使用VB程序加画面窗口做的,)程序如下:
Sub MouseDown(ByVal Item, ByVal Button, ByVal Shift, ByVal x, ByVal y)
Dim PIC
Set PIC = ScreenItems("画面窗口1")''''''''''''''''选择画面窗口
ScreenItems.Item("画面窗口1").PICTURENAME="阀门号"
PIC.Visible = False
PIC.Left = item.Left+10
PIC.Top = item.Top
ScreenItems("画面窗口1").Visible = True
End Sub
我对VB不怎么懂,希望高手们能给在这个程序后加个判断鼠标点击位置的VB程序,使得弹出的对话框不会超出屏幕的边缘!这个比较急,希望高手们不另赐教,小弟在这里先谢过!
最佳答案
试试这个全局函数吧 希望对你有帮助
你只需修改DialogName参数
Sub ShowDialog(Byval DialogName,Byval x,Byval y)
''''对话框显示位置自动调整函数函数
''''鼠标事件按左键事件中调用
''''DialogName为要显示对象的名称 x,y为鼠标点击的位置(鼠标左键事件中调用直接为X,Y)
''''例:Call ShowDialog("1号鼓风机放空气阀_Dialog",x,y)
''''by:逐渐变晕
Dim PageWidth,PageHeight,DiaWidth,DiaHeight,PX,PY,Constval
Constval=30 ''''调整显示对话框距离鼠标点击点距离
PageWidth=HMIRuntime.Screens ("").Width
PageHeight =HMIRuntime.Screens ("").Height
DiaWidth=ScreenItems(DialogName).Width
DiaHeight=ScreenItems(DialogName).Height
px=x+Constval
PY=y+Constval
If x+DiaWidth+Constval >=PageWidth Then
PX=x-Constval*2-DiaWidth
End If
If y+DiaHeight+Constval >=PageHeight Then
PY=y-Constval*2-DiaHeight
End If
ScreenItems(DialogName).Left=PX
ScreenItems(DialogName).Top=PY
ScreenItems(DialogName).Visible = True
End Sub
Sub EndDialog(Byval DialogName)
Dim PageWidth
PageWidth=HMIRuntime.Screens ("").Width
ScreenItems(DialogName).Left=ScreenItems(DialogName).Left+PageWidth
End Sub
提问者对于答案的评价:
xiexie
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc264396.html