弹出的对话框位置问题

使用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

相关推荐

  • wincc 无法监控数据 急!!!!!

    在一个台式机建了工程,能正常运行,转移到一个笔记本上无法监控数据,而且在“驱动程序连接”工程里面的驱动程序的链接状态是断开的。 最佳答案 在驱动程序的连接里,单击右键,系统参数属性…

    SIMATIC WinCC 2017年5月29日
  • wincc更改项目名

    我想修改项目名,但是如何才能使得项目名更改之后还能够正常使用? 我用的是6.0 sp2 最佳答案 你先打开该项目,然后点文件,另存为,输入新文件名,保存就可以了…

    SIMATIC WinCC 2019年6月11日
  • 怎样在wincc里显示1.2.3.4.5.6.7.8………………

    怎样在wincc里把BCD码对应的值显示wincc画面里,既在一个画面里显示1.2.3.4.5.6.7.8……………… 最佳答案 用输出或即可! 提问者对于…

    SIMATIC WinCC 2017年11月16日
  • Wincc flexible 做备份的时候报警

    错误信息:the connected device type does not match the …

    SIMATIC WinCC 2017年11月4日
  • WinCC标准弹出画面

    是这样的,有很多个电机,然后做标准弹出画面,这个官方有案例,但是我的这个标准弹出画面有多个小画面要进行切换,标准弹出画面使用变量前缀做的,这样一来我的画面切换的按钮也会自动添加前缀…

    2021年7月5日
  • obdc数据库建立方法

    WINCC  采集的数据写到OBDC数据库,便于以后的查看和1打印 最佳答案 首先纠正楼至一个错误,是“ODBC”,打开“控制面板”–“管理工具”–“数据源…

    SIMATIC WinCC 2019年6月11日
  • wincc如何通过两个网卡与一个具有2个网口的plc组成环网通讯?

    wincc所在工作站有2个网卡,分别于一个施耐德plc的2个网口相连,如何设置才能实现环网? 最佳答案 一般情况下,一个PLC的两个网口是一个IP地址,因此你这样的做法是无法实现环…

    SIMATIC WinCC 2021年7月5日
  • 装WINCC装不上 急急!!!!

    我之前装上了WINCC后来没用就卸载了,之前装有瑞星杀毒软件,我现在想装WINCC,可是始终装不上,我把杀毒软件也卸载了,注册表里也删了,但就是装不上,提示下载组件错误!,请高手指…

    SIMATIC WinCC 2019年6月11日
  • 关于上位机的组建问题

    大家好!!我想利用西门子的wincc7.2软件,通过profibus总线和200PLC、300PLC、三菱的PLC连接,请问我这边应该如何搭建这个系统呢?电脑主板需要扩展什么型号的…

    SIMATIC WinCC 2017年7月30日
  • 再问一下过程变量的刷新问题?

    过程变量的刷新周期最快是250ms!我用一个过程变量作为一个动作的触发变量,标准周期设为250ms,是不是就是系统每250ms查询一下wincc映射区,检查过程变量的值是否改变? …

    SIMATIC WinCC 2019年6月11日