|
最近用pb做了一个触摸屏的程序,项目组要求窗口显示关闭的时候有点动态效果,于是我就写了如下的程序,供大家参考借鉴。
--------------------------------- //实现关闭窗体时的动态效果 //
------------------------------- //函数名:gf_closequery //参数说明: //
window window类型,调用窗口的名字 // closetype integer类型,窗口关闭方式,value = 0~10 //
------------------------------- //申明局部变量 int li_x
,li_y,li_width,li_height,li_ceny,li_cenx,li_xminusy,li_wminush Integer
li_gd
//取出当前窗口的坐标值、大小值 li_x = window.x li_y = window.y li_width =
window.width li_height = window.height
//设置窗体关闭前的动画效果 //关键是看哪个值发生了变化——x、y、h、w CHOOSE CASE
closetype CASE 0 // closetype = 0,从下到上逐渐消失 for li_gd = li_height to 0
step -1 window.height = li_gd window.show() next CASE 1 //
closetype = 1,从上到下逐渐消失 for li_gd = li_y to li_height+li_y step
1 window.y = li_gd window.height = li_height+li_y -
li_gd window.show() next CASE 2 // closetype =
2,从右到左逐渐消失 for li_gd = li_width to 0 step -1 window.width =
li_gd next CASE 3 // closetype = 3,从左到右逐渐消失 for li_gd = li_x to
li_x+li_width step 1 window.x = li_gd window.width = li_x+li_width -
li_gd window.show() next case 4 // closetype =
4,从上下向中间挤压逐渐消失 li_ceny = li_y+li_height/2 for li_gd = li_y to li_ceny
step 1 window.y = li_gd window.height = li_height - 2*(li_gd -
li_y) next case 5 // closetype = 5,从左右向中间挤压逐渐消失 li_cenx =
li_x+li_width / 2 for li_gd = li_x to li_cenx step 1 window.x =
li_gd window.width = li_width - 2*(li_gd - li_x) next case 6 //
closetype = 6,从左上->右下 for li_gd = li_y to li_height+li_y step
1 window.y = li_gd window.height = li_height+li_y - li_gd if
window.x < li_x + li_width then window.x = li_x + (li_gd -
li_y) else window.x = li_x + li_width end if if window.width
> 0 then window.width = li_x+li_width -
window.x else window.width = 0 end if next window.x =
li_x + li_width window.y = li_height+li_y window.width =
0 window.height = 0 window.show() case 7 // closetype =
7,从右下->左上 for li_gd = li_height to 0 step -1 window.height =
li_gd if window.width > 0 then window.width = li_width - (li_height
- li_gd) else window.width = 0 end if next window.x =
li_x window.y = li_y window.width = 0 window.height =
0 window.show() case 8 // closetype = 8,从右上->左下 for li_gd =
li_y to li_height+li_y step 1 window.y = li_gd window.height =
li_height+li_y - li_gd if window.width > 0 then window.width =
li_width - (li_gd - li_y) else window.width = 0 end
if next window.x = li_x window.y =
li_height+li_y window.width = 0 window.height =
0 window.show() case 9 // closetype = 9,从左下->右上 for li_gd =
li_x to li_x+li_width step 1 window.x = li_gd window.width = li_width
+li_x -li_gd if window.height > 0 then window.height = li_height
-(li_gd - li_x) else window.height = 0 end
if next window.x = li_x+li_width window.y =
li_y window.width = 0 window.height = 0 window.show() case
10 // closetype = 10,从四面到中间 li_ceny = li_y+li_height/2 li_cenx =
li_x+li_width / 2 for li_gd = li_y to li_ceny step 1 window.y =
li_gd window.height = li_height - 2*(li_gd - li_y) if window.x <
li_x + li_cenx then window.x = li_x + (li_gd -
li_y) else window.x = li_x + li_cenx end if if window.width
> 0 then window.width = li_width - 2*(li_gd -
li_y) else window.width = 0 end if next window.x =
li_cenx window.y = li_ceny window.width = 0 window.height =
0 window.show() case else window.show() window.width =
li_width window.height = li_height window.x = li_x window.y =
li_y END CHOOSE return
0 ************************ //调用该函数在窗体的closequery事件中 gf_closequery
(w_main,mod(integer(string(now(),"ss")),11))
|