像QQ一样收起打开的rollout简洁版

模仿QQ面版自动隐藏和显示。此处只有顶部隐藏(左右隐藏同理可加)。移动面版到顶边时自动收起,鼠标经过时自动放下,鼠标离开面版后会再次收起(拖动到屏幕中间时不会收起)。
当然,这个收起放下并不没有移动的过程,只是窗口位置的即时变化。一定要美化这个功能也可以用timer来控制y的变化。
这里窗口大小都可以设成变量来调用。

 

---OO2011
try destroydialog oo catch()
rollout OO "OO2011"
(

timer hidew "" interval:400 active:true -- 反映时间可在此调节

---- 窗口动作
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 (判断面版处于隐藏状态)

(
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  ---如果面版为显示状态则。。。

(
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]  --面版又隐藏起来

)
)
)
createdialog oo 240 480

 

你可能感兴趣的:(像QQ一样收起打开的rollout简洁版)