窗体动态效果的实现

时间:2007-06-15 来源: 作者: 【字体: 减小 增大收藏 | 投稿
  

最近用pb做了一个触摸屏的程序,项目组要求窗口显示关闭的时候有点动态效果,于是我就写了如下的程序,供大家参考借鉴。 财软联盟,fs119.net


---------------------------------
//实现关闭窗体时的动态效果
//-------------------------------
//函数名:gf_closequery
//参数说明:
//windowwindow类型,调用窗口的名字
//closetypeinteger类型,窗口关闭方式,value=0~10
//-------------------------------
//申明局部变量
intli_x,li_y,li_width,li_height,li_ceny,li_cenx,li_xminusy,li_wminush
Integerli_gd

财软.联盟.fs119.net

//取出当前窗口的坐标值、大小值
li_x=window.x
li_y=window.y
li_width=window.width
li_height=window.height

财软联,盟,fs119.net

//设置窗体关闭前的动画效果
//关键是看哪个值发生了变化——x、y、h、w
CHOOSECASEclosetype
CASE0//closetype=0,从下到上逐渐消失
forli_gd=li_heightto0step-1
window.height=li_gd
window.show()
next
CASE1//closetype=1,从上到下逐渐消失
forli_gd=li_ytoli_heightli_ystep1
window.y=li_gd
window.height=li_heightli_y-li_gd
window.show()
next
CASE2//closetype=2,从右到左逐渐消失
forli_gd=li_widthto0step-1
window.width=li_gd
next
CASE3//closetype=3,从左到右逐渐消失
forli_gd=li_xtoli_xli_widthstep1
window.x=li_gd
window.width=li_xli_width-li_gd
window.show()
next
case4//closetype=4,从上下向中间挤压逐渐消失
li_ceny=li_yli_height/2
forli_gd=li_ytoli_cenystep1
window.y=li_gd
window.height=li_height-2*(li_gd-li_y)
next
case5//closetype=5,从左右向中间挤压逐渐消失
li_cenx=li_xli_width/2
forli_gd=li_xtoli_cenxstep1
window.x=li_gd
window.width=li_width-2*(li_gd-li_x) 财,软联盟,fs119.net
next
case6//closetype=6,从左上->右下
forli_gd=li_ytoli_heightli_ystep1
window.y=li_gd
window.height=li_heightli_y-li_gd
ifwindow.x<li_xli_widththen
window.x=li_x(li_gd-li_y)
else
window.x=li_xli_width
endif
ifwindow.width>0then
window.width=li_xli_width-window.x
else
window.width=0
endif
next
window.x=li_xli_width
window.y=li_heightli_y
window.width=0
window.height=0
window.show()
case7//closetype=7,从右下->左上
forli_gd=li_heightto0step-1
window.height=li_gd
ifwindow.width>0then
window.width=li_width-(li_height-li_gd)
else
window.width=0
endif
next
window.x=li_x
window.y=li_y
window.width=0
window.height=0
window.show()
case8//closetype=8,从右上->左下
forli_gd=li_ytoli_heightli_ystep1
window.y=li_gd
window.height=li_heightli_y-li_gd
ifwindow.width>0then
window.width=li_width-(li_gd-li_y)
else
window.width=0
endif
next
window.x=li_x
window.y=li_heightli_y

财软,联盟,fs119.net

window.width=0
window.height=0
window.show()
case9//closetype=9,从左下->右上
forli_gd=li_xtoli_xli_widthstep1
window.x=li_gd
window.width=li_widthli_x-li_gd
ifwindow.height>0then
window.height=li_height-(li_gd-li_x)
else
window.height=0
endif
next
window.x=li_xli_width
window.y=li_y
window.width=0
window.height=0
window.show()
case10//closetype=10,从四面到中间
li_ceny=li_yli_height/2
li_cenx=li_xli_width/2
forli_gd=li_ytoli_cenystep1
window.y=li_gd
window.height=li_height-2*(li_gd-li_y)
ifwindow.x<li_xli_cenxthen
window.x=li_x(li_gd-li_y)
else
window.x=li_xli_cenx
endif
ifwindow.width>0then
window.width=li_width-2*(li_gd-li_y)
else
window.width=0
endif
next
window.x=li_cenx
window.y=li_ceny
window.width=0
window.height=0
window.show()
caseelse
window.show()
window.width=li_width
window.height=li_height
window.x=li_x
window.y=li_y
ENDCHOOSE
return0

财软.联盟.fs119.net


************************
//调用该函数在窗体的closequery事件中
gf_closequery(w_main,mod(integer(string(now(),"ss")),11)) 财管家,园,fs119.net

财 管家园 fs119.net

财软联盟,fs119.net

财管.家园.fs119.net

财管家,园,fs119.net


上一篇:在PB下实现圆形的窗口
下一篇:PB实现数据窗口动态排序的方法

精品课程推荐