高分救助!请问在form的大小发生变化的时候怎么让form上控件的位置也随之自动调整大小?谢谢(200分)

  • 主题发起人 主题发起人 xbase
  • 开始时间 开始时间
记得有意控件叫Resize.ocx,可以帮助你完成此任务(需要找我);
或者自己做.
1.当form产生的时候,记录大小;
2.当改变form大小,在resize事件中可以计算改变的比率,然后逐个改变大小;
 
自己在Form的OnCanResize和OnResize事件中写代码,用scaleby方法。

OnCanResize中用newWidth和/或newHeight计算出缩放比例,
然后在OnResize中使用各个控件的Scaleby方法,。


 
在OnResize中计算,设置调整后的位置
以Form和控件的top,left,Height,Width,ClientWidth,ClientHeight为计算依据
 
只能计算比率了,
 
同意IKNOW的方法,在实际编程中我用的就是这种方法.计算出窗体宽度的变化,也就是比率了,根据这个算出各个控件变化后的大小
 
建议你找个控件吧。
 
有控件的话给我一个行吗?
 
深度历险有一个这样的控带源码。
 
最简单的方法就是使用控件的Anchors属性.
 
Anchors在要求不高的时候可以

你要怎么样动态修改,大不了自己写一段代码在OnResize里计算
 
可以先贴一些Panel定位,然后再在这些Panel上贴控件
 
同意Iknow,我也曾经应用过这种方法.
 
1。如果有Align属性的话,可以设置它们的属性为alNone之外的任何一种!
在需要改变大小的控件之间加个TSplitter控件(Additional里有)!
一般来说,有可编辑控件、列表框之类的控件,可以设置Form的风格为可变大小的!
例如:添加如下控件,设置Align属性
ListBox1: TListBox Align属性:alLeft
Splitter1: TSplitter Align属性:alLeft
Memo1: TMemo Align属性:Client
程序运行时就可以用鼠标控制Splitter1或随窗体改变大小来改变控件大小!
2。如果没有Align属性的话,可以在窗体的OnResize事件里用控件的属性来设置
你所需要的位置、大小。
 
你是有DELPHI5吗?

如果是的话,请用anchors属性,Object Inspector中直接设就可以了。

ok?
 
自适应Form的实现没有必要复杂化。
同意GOHKI、qcq、naming:
1〉对于表格、列表框等希望随Form调整大小的控件,用Panel配合控件的Align属性;
2〉对于按钮、标签等不希望随Form调整大小、只希望调整相对位置的控件,用Anchors属性;
3〉用比例缩放总不是很精确,并且还有字体大小的调整问题。
 
Sorry:gcq
贴错了名字
补充:
4〉更没有必要用第三方控件增加程序的重量(在不是完全必要时)。
 
哈哈!very easy!
先添加一个panel控件,然后将你的其他控件放入其中即可!
但要调整panel的align的属性!
 
yazoox:可不行,象speedbutton这种的构件肯定要计算宽度和高度的。
 
后退
顶部