在PB中改变窗口控件的大小 张天清 2001年 40期 在Power 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事件中写如下代码:   int allxally   allx=this.workspacewidth()   ally=this.workspaceheight()   st_1.width=10 //设置拖动条大小及位置   st_1.height=ally/2 - 100   st_1.x=allx/2   st_1.y=100   st_2.width=allx - 200   st_2.height=10   st_2.x=100   st_2.y=ally/2   dw_1.width=allx/2 - 100 //设置数据窗口大小及位置   dw_1.height=ally/2 - 100   dw_1.x=100   dw_1.y=100   dw_2.width=allx/2 - 100 - st_1.width   dw_2.height=ally/2 - 100   dw_2.x=allx/2 + st_1.width   dw_2.y=100   dw_3.width=allx - 200   dw_3.height=ally/2 - 100 - st_2.height   dw_3.x=100   dw_3.y=ally/2 + st_2.height   以上代码保证在窗口大小改变时,各控件位置及大小随之改变。   接下来分别为st_1、st_2定义以下事件:   事件mouse_on 事件id:pbm_mousemove   事件mouse_up 事件id:pbm_lbuttonup   事件mouse_down 事件id:pbm_lbuttondown   然后为st_1、st_2的事件编写代码:   //st_1事件mouse_on代码:   if keydown(KeyLeftButton!)then //按下鼠标左键并移动鼠标时,拖动条移动   this.x=parent.pointerx   end if   //st_1事件mouse_down代码:   this.backcolor=0 //按下鼠标左键时,拖动条背景色为黑色   //st_1事件mouse_up代码:   this.backcolor=parent.backcolor //松开鼠标左键时,拖动条背景色为窗口背景色   dw_2.x=this.x+this.width //重设控件位置及大小   dw_2.width=parent.workspacewidth() - 100 - dw_2.x   dw_1.width=this.x - dw_1.x   //st_2事件mouse_on代码:   if keydownKeyLeftButtonthen   this.y=parent.pointery()   end if   //st_2事件mouse_down代码:   this.backcolor=0   //st_2事件mouse_up代码:   this.backcolor=parent.backcolor   dw_3.y=this.y+this.height   dw_3.height=parent.workspaceheight()- 100 - this.y - this.height   dw_1.height=this.y - dw_1.y   st_1.height=dw_1.height   dw_2.height=dw_1.height   运行窗口w_1,当鼠标形状变成箭头形状时,沿箭头方向按下鼠标左键移动鼠标然后松开鼠标左键,窗口控件的大小随之改变。如果数据窗口内包含一些在本数据窗口不能完全显示的数据,用户只须按下鼠标左键移动鼠标便能改变数据的可视范围,给用户带来极大的方便。该程序在PB 6.5/Windows 98SE环境下调试通过。