模仿QQ面版自動隱藏和顯示。此處只有頂部隱藏(左右隱藏同理可加)。移動面版到頂邊時自動收起,鼠標通過時自動放下,鼠標離開面版後會再次收起(拖動到屏幕中間時不會收起)。
固然,這個收起放下並不沒有移動的過程,只是窗口位置的即時變化。必定要美化這個功能也能夠用timer來控制y的變化。
這裏窗口大小均可以設成變量來調用。 ide
---OO2011
try destroydialog oo catch()
rollout OO "OO2011"
( spa
timer hidew "" interval:400 active:true -- 反映時間可在此調節 get
---- 窗口動做
on oo moved pos do
(
if ((getdialogpos oo)[2] < 1 ) then setdialogpos oo [(getdialogpos oo)[1],-504] ---當窗口拖動到頂邊時隱藏界面。(也就是面版的Y軸到頂邊時就設定Y軸位置爲隱藏窗口的高度,爲何是-504而不是-600由於面版邊框和要留出的多少有關。)
) 變量
on hidew tick do if (getdialogpos oo)[2] < 0 then ---若是面版Y軸<0 (判斷面版處於隱藏狀態) im
(
if ( mouse.screenpos[1] as integer >= (getdialogpos oo)[1] and mouse.screenpos[1] as integer <= ((getdialogpos oo)[1] + 240 ) and mouse.screenpos[2] as integer <= 1 ) --當鼠標通過隱藏界面留出部份時。。。
then setdialogpos oo [(getdialogpos oo)[1],1] --面版位置顯示 移動
) else ---若是面版爲顯示狀態則。。。 di
(
if (getdialogpos oo)[2] == 1 do --判斷面版正處在隱藏後喚出的狀態。。(Y軸爲1時,也就是說若是面版被拖到屏幕中不靠頂的話下面的動做無效)
( 時間
if ( mouse.screenpos[1] as integer <= (getdialogpos oo)[1] or mouse.screenpos[1] as integer >= ((getdialogpos oo)[1] + 240 ) or mouse.screenpos[2] as integer >= 510 ) --若是鼠標超出面版範圍後。。。
then setdialogpos oo [(getdialogpos oo)[1],-504] --面版又隱藏起來 time
)
)
)
createdialog oo 240 480 界面