Chinaunix首页 | 论坛 | 博客
  • 博客访问: 539223
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类: 项目管理

2010-09-12 15:04:32


C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开 发速度。但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了。随着Form的大小或屏幕分辨率的改变,控件和Form本身 的位置往往变得非常混乱。本文将介绍一些正确定位控件及Form的方法。

利用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奖悖??焕?诙猿勺榭丶??胁僮鳌

阅读(1330) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~