delphi7中如何设定窗体里的组件随窗体变化?(按比例扩大或缩小)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi7中如何设定窗体里的组件随窗体变化?(按比例扩大或缩小)相关的知识,希望对你有一定的参考价值。

dephi7中设定窗体里的组件随窗体变化是用组件的Align属性(对齐方式)Align属性有以下几个选项:alNone(不对齐);alBottom(底部对齐)alClient(剩余区域对齐。具体看帮助。我自己翻译了这个名字);alCustom(自定义对齐。);alLeft(左对齐);alRight(右对齐);alTop(顶部对齐)。
当有一个或多个组件需要随窗体变化宽高时。一般用到Align属性。常用方式是选用几个panel控件。一个顶部对齐。这个panel控件的高度不变。永远在窗体的上边,宽度就会自动变化。然后一个panel设为底部对齐,这个panel控件的高度也不变,永远在底部,一般当做状态栏。然后一个panel设为剩余区域对齐。这个panel的高宽就会自动随窗体变化为剩下区域的位置的高宽。然后放三个panel控件到最后这个panel上。一个左对齐。这个panel控件的宽度不变。永远在窗体的左边,高度就会自动变化。然后一个panel设为右对齐,这个panel控件的宽度也不变,永远在右边。然后一个panel设为剩余区域对齐。这样。我们就把窗口分割为上下左右和中间五个区域。你根据你的窗体设计情况自由裁剪。经组合一般可达到你的要求。
希望有分啊!当然也希望能帮到你!
参考技术A 设置Align和Anchors属性

在窗体的OnResize事件里重新设置一个目标控件的Left、Top、Width与Height值即可

如果想要控件的位置变而大小不变,可以这样:
procedure TForm1.FormResize(Sender: TObject);
begin

Button1.Left:=round(left*clientwidth/fwidth);
Button1.Top:=round(top*clientheight/fheight);

end;
其中left,top 是最初button1的left与top值,fwidth,fheight是最初form1的width与height值.

看看是否对你有帮助追问

我的意思是把窗体界面(已有许多控件)已经设置好了,但是我需要用最大或最小按钮(一般为右上角的那三个图标)或者拖动来改变,比如浏览器那样的,可以说的具体点吗?谢谢!

追答

如果整个页面的控件随窗口按比例放大缩小的话,我感觉客户体验肯定不好
浏览器的最大化,网页也没有随之改变,除非你改变电脑的分辨率

参考资料:http://hi.baidu.com/gaops/blog/item/5138cd3332fe0256ac4b5f44.html

参考技术B 恐怕只有写语句来实现了追问

你知道怎么写?

追答

我说个想法吧,窗体是你画的,里面有哪些控件你也知道,把他们的位置(left,top height,width)在窗体创建后写到一个配置文件里面,然后在FORM的ONRESIZE事件里面取新的FORM的WIDTH,HEIGHT,去除配置文件里面的数字得到一个长与宽的分别的变动比率,用这两个比率分别来计算新的座标与长宽。
不过我觉得如果窗体中的控件少还好办,如果有几十个控件的话那是相当累的一件事。

刚测试了一下,是可行的。

怎样使delphi里的控件随窗体的大小变化而变化

就比如新建一个窗体,里面添加许多控件,窗体刚开始比较小,等最大化或者运行全屏时,控件的大小和位置一点都不变,显的很不对称。试了许多方法也不行,只有提问了。

你应该在添加控件之前,先在窗体里面添加一些PANEL控件或者groupbox控件,把窗体分割成不同的区,然后在这些区里面再放你需要的控件。这些panel或groupbox可以设置他们的ALIGN属性为ALLEFT,ALRIGHT,Altop,ALCLIENT等等,这样当窗体变化时它们可以自动调节大小,如果效果还不好,可以再在这些panel里面再添加多个panel来进一步分割,以此类推就可以,如果嫌panel的边框不好看,可以把里面panel的bevelouter属性设置为bvNone就可以了。
如果有更高的比例要求,就在窗体的onsize事件里面,设定各种panel的宽度高度就可以了。
参考技术A 控件的Object Inspector中设置Anchors

如果最大化时需要向右延伸则
akRight:=true
参考技术B 在窗体的onsize事件里自己计算。或者使用splitter分割,每个控件设置alain属性

以上是关于delphi7中如何设定窗体里的组件随窗体变化?(按比例扩大或缩小)的主要内容,如果未能解决你的问题,请参考以下文章

delphi实现窗体组建随窗体大小改变而改变

delphi窗体的问题

如何设计delphi 窗体里面的组件居中

VB中如何设置窗体内控件大小随窗体大小改变而改变?

vc中如何让背景图片随窗体的大小变化而改变 mfc

MFC中TabCtrl控件怎么随着窗体的大小变化而变化?