弹出的对话框位置问题

使用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日 上午2:56
下一篇 2019年6月11日 上午2:57

相关推荐

  • combobox的使用

    各位大虾们,小弟最近碰到个客户需要新建配方名称的功能,附件是小弟做的画面,用的combobox控件做的下拉菜单,当画面不刷新的时候,combobox下拉菜单的名称可以更新,但是刷新…

    2017年11月4日
  • wincc如何锁定键盘上的windows健?

    wincc一般只能锁定常用的windows组合键,请问怎样锁定键盘上的windows键,就是那个有windows旗帜标志的键? 最佳答案  标准Windows键盘上都有一…

    SIMATIC WinCC 2019年6月11日
  • 这个c动作里return函数的参数为0和为1有什么区别?

    #pragma code("Winmm.dll") void WINAPI PlaySoundA(char *…

    SIMATIC WinCC 2017年11月26日
  • 用户归档的两个问题,急救~

    用户归档问题1:表格形式的归档可否直接对外部变量进行归档保存啊? 问题2:我现在有两组数据,一组数据是设定值,有一组变量进行连接;另外还有一组是实际值,有另外一组变量进行…

    SIMATIC WinCC 2019年6月11日
  • wincc中结构变量具体是做什么用的?

    wincc中结构变量具体是做什么用的? 问题补充:在通信协议下建立的变量和在结构变量下建立的变量有什么区别? 最佳答案 我使用结构变量主要是配合画面模板功能。画面中的变量全部使用结…

    SIMATIC WinCC 2019年6月11日
  • wincc6.0 数据库读写操作

    问题1:不频繁地读写wincc6.0数据库是否可靠。问题2:怎样实现通过wincc读写数据库(实现方法简单可靠越好) 问题补充:wincc6.0 数据库能否对 …

    SIMATIC WinCC 2019年6月11日
  • connectivity pack 不兼容

    因为要用到connectivity pack,安装光盘里面带的connectivity pack,与wincc同一版本,但是提示说Wincc不兼容,请问大神怎么…

    2021年7月5日
  • wincc c脚本 由创建文件夹(目录)的函数吗?

    想通过wincc的c脚本创建一个文件夹,不知道,有没有这个函数?谢谢指教! 最佳答案 使用cmd命令:mkdir,如:system("mkdir  D…

    SIMATIC WinCC 2021年7月5日
  • WINDOWS XP 登录问题

    我已设置了windows xp用户账户和密码,但每次我开机、重起、注销时在登录界面都得输入用户名和密码,怎么设置才能使用户名默认为管理员账号,只要输入密码了,谢谢 最佳答…

    SIMATIC WinCC 2019年6月11日
  • WINCC之间的时间同步

    请问WINCC之间进行时间同步是必须使用CP1613网卡吗?使用普通网卡能不能实现呢?谢谢! 最佳答案 可以使用普通网卡进行WinCC之间的时钟同步。  在Wi…

    SIMATIC WinCC 2019年6月11日