在PB中改变窗口控件的大小

Author: 张天清 Date: 2001年 40期

?牐犜赑ower Builder(以下简称PB)编程中,良好的用户界面将为你的程序增色不少。程序运行时,用户通过改变控件大小获取屏幕不能完全显示的信息,将极大的增加用户对程序的好感。比如一个窗口上有三个数据窗口,两个数据窗口位于窗口上半部,一个数据窗口位于窗口的下半部(如Foxmail的主窗口布局),用户通过可以改变数据窗口大小,增加任意数据窗口的可视范围以显示更多的信息。实现方法如下:
  ?牐?1.建立一窗口,名为w_1,类型为main,title为“控件拖动”;
  ?牐?2.在w_1上放置三个数据窗口控件,窗口上方左侧数据窗口为dw_1,右侧数据窗口为dw_2,窗口下方数据窗口为dw_3(布局像一倒立的品字);在dw_1和dw_2之间放置一静态文本框,名为st_1,在dw_1及dw_3之间放置一静态文本框,名为st_2;st_1的autodrag为false,enabled为true,pointer为SizeWE!,st_2的autodrag为false,enabled为true,pointer为SizeNS!。
  ?牐?3.在w_1的resize事件中写如下代码:
  ?牐爄nt allxally
  ?牐燼llx=this.workspacewidth()
  ?牐燼lly=this.workspaceheight()?煟?
  ?牐爏t_1.width=10 //设置拖动条大小及位置
  ?牐爏t_1.height=ally/2 - 100
  ?牐爏t_1.x=allx/2
  ?牐爏t_1.y=100
  ?牐爏t_2.width=allx - 200
  ?牐爏t_2.height=10
  ?牐爏t_2.x=100
  ?牐爏t_2.y=ally/2
  ?牐燿w_1.width=allx/2 - 100 //设置数据窗口大小及位置
  ?牐燿w_1.height=ally/2 - 100
  ?牐燿w_1.x=100
  ?牐燿w_1.y=100
  ?牐燿w_2.width=allx/2 - 100 - st_1.width
  ?牐燿w_2.height=ally/2 - 100
  ?牐燿w_2.x=allx/2 + st_1.width
  ?牐燿w_2.y=100
  ?牐燿w_3.width=allx - 200
  ?牐燿w_3.height=ally/2 - 100 - st_2.height
  ?牐燿w_3.x=100
  ?牐燿w_3.y=ally/2 + st_2.height
  ?牐犚陨洗氡Vぴ诖翱诖笮「谋涫保骺丶恢眉按笮∷嬷谋洹?
  ?牐牻酉吕捶直鹞猻t_1、st_2定义以下事件:
  ?牐犑录?mouse_on 事件id:pbm_mousemove
  ?牐犑录?mouse_up 事件id:pbm_lbuttonup
  ?牐犑录?mouse_down 事件id:pbm_lbuttondown
  ?牐犎缓笪猻t_1、st_2的事件编写代码:
  ?牐?//st_1事件mouse_on代码:
  ?牐爄f keydown(KeyLeftButton!)?爐hen //按下鼠标左键并移动鼠标时,拖动条移动
  ?牐爐his.x=parent.pointerx?煟?
  ?牐爀nd if
  ?牐?//st_1事件mouse_down代码:
  ?牐爐his.backcolor=0 //按下鼠标左键时,拖动条背景色为黑色
  ?牐?//st_1事件mouse_up代码:
  ?牐爐his.backcolor=parent.backcolor //松开鼠标左键时,拖动条背景色为窗口背景色
  ?牐燿w_2.x=this.x+this.width //重设控件位置及大小
  ?牐燿w_2.width=parent.workspacewidth() - 100 - dw_2.x
  ?牐燿w_1.width=this.x - dw_1.x
  ?牐?//st_2事件mouse_on代码:
  ?牐爄f keydown?烱eyLeftButtonthen
  ?牐爐his.y=parent.pointery()
  ?牐爀nd if
  ?牐?//st_2事件mouse_down代码:
  ?牐爐his.backcolor=0
  ?牐?//st_2事件mouse_up代码:
  ?牐爐his.backcolor=parent.backcolor
  ?牐燿w_3.y=this.y+this.height
  ?牐燿w_3.height=parent.workspaceheight()- 100 - this.y - this.height
  ?牐燿w_1.height=this.y - dw_1.y
  ?牐爏t_1.height=dw_1.height
  ?牐燿w_2.height=dw_1.height
  ?牐犜诵写翱趙_1,当鼠标形状变成箭头形状时,沿箭头方向按下鼠标左键移动鼠标然后松开鼠标左键,窗口控件的大小随之改变。如果数据窗口内包含一些在本数据窗口不能完全显示的数据,用户只须按下鼠标左键移动鼠标便能改变数据的可视范围,给用户带来极大的方便。该程序在PB 6.5/Windows 98SE环境下调试通过。