彈出的對(duì)話框位置問(wèn)題
劉玉蓉
發(fā)布于2014-10-13 17:38
2
0
標(biāo)簽:
使用WINCC庫(kù)中的閥門(mén)、電機(jī)等圖標(biāo),單擊他們彈出操作的對(duì)話框,現(xiàn)在的問(wèn)題是彈出的對(duì)話框是在鼠標(biāo)點(diǎn)擊的位置附近出來(lái),但是點(diǎn)擊監(jiān)控畫(huà)面邊緣的圖標(biāo)時(shí)發(fā)現(xiàn),彈出的對(duì)話框超出了畫(huà)面的邊緣,還得用鼠標(biāo)拖拽回來(lái),(因?yàn)槭歉脑祉?xiàng)目,原制作者在PLC中的地址不規(guī)律,無(wú)法用結(jié)構(gòu)變量,只能把閥門(mén)的操作對(duì)話框逐一制作出來(lái),我使用VB程序加畫(huà)面窗口做的,)程序如下:
Sub MouseDown(ByVal Item, ByVal Button, ByVal Shift, ByVal x, ByVal y)
Dim PIC
Set PIC = ScreenItems("畫(huà)面窗口1")""""""""選擇畫(huà)面窗口
ScreenItems.Item("畫(huà)面窗口1").PICTURENAME="閥門(mén)號(hào)"
PIC.Visible = False
PIC.Left = item.Left+10
PIC.Top = item.Top
ScreenItems("畫(huà)面窗口1").Visible = True
End Sub
不知道怎么解決,請(qǐng)賜教!
問(wèn)題補(bǔ)充:
能不能來(lái)個(gè)VB的程序判斷離上下、左右的位置啊
佳答案
試試這個(gè)全局函數(shù)吧 希望對(duì)你有幫助
你只需修改DialogName參數(shù)
Sub ShowDialog(Byval DialogName,Byval x,Byval y)
""""""""對(duì)話框顯示位置自動(dòng)調(diào)整函數(shù)函數(shù)
""""""""鼠標(biāo)事件按左鍵事件中調(diào)用
""""""""DialogName為要顯示對(duì)象的名稱 x,y為鼠標(biāo)點(diǎn)擊的位置(鼠標(biāo)左鍵事件中調(diào)用直接為X,Y)
""""""""例:Call ShowDialog("1號(hào)鼓風(fēng)機(jī)放空氣閥_Dialog",x,y)
""""""""by:逐漸變暈
Dim PageWidth,PageHeight,DiaWidth,DiaHeight,PX,PY,Constval
Constval=30 """"""""調(diào)整顯示對(duì)話框距離鼠標(biāo)點(diǎn)擊點(diǎn)距離
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