我要投稿
  • 您当前的位置:57365.com -> 技术教程 -> 数据库教程 -> VFP教程 -> 教程内容
  • [ 收藏本页教程 ]
  • 窗体动态效果的实现VFP教程

    教程作者:佚名    教程来源:不详   教程栏目:VFP教程    收藏本页

        最近用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))

     

    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.hxswjs.com All Rights Reserved.57365.com 版权所有