分类: 项目管理
2010-09-12 15:04:32
利用OnResize事件改变控件位置及大小
C++
Builder/Delphi中的Form控件有一个OnResize事件,Form的所有与大小变化有关的动作可以触发这个事件,包括Form的创建、
最大化/最小化/还原、用鼠标拖动改变大小等。因此,在此事件中动态地改变各个控件的位置可以确保其在Form中的相对位置正确。因为CBuilder与
Delphi的程序有很多共同之处,所以这里只列出CBuilder的代码。
下面的代码将确保控件在任何情况下都居中。
程序一:
void __fastcall TForm1::FofmResize(TObject*Sender)
{int midLoc=Width/2; //取Form的中点
//设置Label1的位置为Form居中
Label1-$#@62;Left=midLoc-Label1-$#@62;Width/2;
//设置Button1的位置为Form居中
Button1-$#@62;Left=midLoc-Button1-$#@62;Width/2;}
稍微修改这段代码,可以使控件保持在任何想要的位置。同样,也可以利用OnResize事件改变控件的大小。当Form中控件很多时,分别对 每一个控件单独调整位置是件非常麻烦的事,在TFrom类中有一个Controls数组维护所有From中的控件,利用它可方便地对所有控件进行操作。下 面是其源代码:
程序二:
void __fastcall TForm1::FormResize(TObject*Sender)
{int midLoc=Width/2;
TControl * ChildControl;
fof(int i=0; i$#@60;ControlCount; i++)
{//遍历Controls数组,ControlCount是数组元素个数
ChildControl = Controls[i];
ChildCotrol-$#@62;Left = midLoc-ChildControl-$#@62;Width/2;}
}
利用“容器”控制成组控件位置
上面的代码对维持所有控制到统一 梅浅7奖悖??焕?诙猿勺榭丶??胁僮鳌