弹出的对话框位置问题

使用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的程序判断离上下、左右的位置啊

最佳答案

试试这个全局函数吧 希望对你有帮助
你只需修改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

提问者对于答案的评价:
谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc264380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • wincc报警记录怎样显示

    我想在某一个二进制变量(例如m1.0)的上升沿时, 让wincc的wincc alarm control控件中输出一条报警信息. 我应该在报…

    SIMATIC WinCC 2019年6月11日
  • wincc在线表格控件查询数据位数

    我做了变量记录,用在线表格控件查询,查询出来的数据小数点后有6到7位,我只要小数点后2位,怎么设置 最佳答案 在线表格,左键双击,弹出窗口选择“列",在这个窗口中有一个“…

    SIMATIC WinCC 2017年11月6日
  • WINCC 中控件的使用

    在C脚本中如何调用其他的控件? 比如我想一个按钮中调用一个图形控件,改变它的大小,该怎么调用?或者怎么推荐一点C脚本方面的资料。 问题补充:谢谢满  …

    SIMATIC WinCC 2019年6月11日
  • wincc7.0添加OPC通讯无法读到变量,但是可以读到服务器

    wincc7.0添加OPC通讯无法读到变量,但是可以读到服务器 图片说明:    最佳答案 其实你并没有读到你所需要的服务器,当然无法读到变量。你还是首先搞好O…

    2020年11月1日
  • wincc经KEPserver通讯PLC数据,电脑重启后设定值归0是什么原因?

    我的一个参数设定界面,为什么电脑重启后(PLC未失电),之前?设定的值就归“0”了,按道理所有的设定值,PLC接受后就在变量上保存了,wincc重启后应该是不会清0的,这是不是也是…

    2021年7月5日
  • 如何自己手动增加数据归档

    用户要做假数,非得要看很久以前的数据,可是那个时候根本还没开始归档,哪位高手能告诉我如何在数据库里做出wincc能够识别的数据 最佳答案 这个简单,WINCC归档的记录时间是存储的…

    SIMATIC WinCC 2019年6月11日
  • Wincc 连接DB 报Server busy 然后就死机了

    软件版本pcs7 v8.2亚洲版,系统win7 64位英文旗舰版,在db里建的中间变量 老是频繁出现server busy 然后按…

    SIMATIC WinCC 2021年7月5日
  • 电脑与触摸屏链接问题

    用网线把电脑与触摸屏链接以往没问题的,可是这次链接不了,程序下载不了,为什么??? 问题补充:谢谢大家!问题已解决,是编程软件的问题,最佳只有一个,我也很为难啦 图片说明: &nb…

    2021年7月5日
  • wincc数据库无法显示报警记录组态里面的文本

    在wincc报警记录里面组态了文本消息,为什么带有过程变量的文本消息(设置为归档)在数据库里无法归档,而其他的却可以 最佳答案 有可能是语言切换问题,对应你现在运行的这种语言下面没…

    SIMATIC WinCC 2019年6月11日
  • 工控机总是死机

    最近我厂的工控机总是死机,怀疑是电源不干净,因我厂大量的使用变频器,有没有类似净化电源的东西,把电源虑一下波?请大家指教 问题补充:我厂有UPS 最佳答案 工控机死机,需要考虑两个…

    SIMATIC WinCC 2018年12月14日