最近用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 // clo