屏幕分辨率改变后,如何实现窗体上控件位置自适应窗体? (20分)

  • 主题发起人 代码雪儿
  • 开始时间

代码雪儿

Unregistered / Unconfirmed
GUEST, unregistred user!
·在800*600下,窗体以及其控件部属显示正常,但是改变分辨率(1024×768)后,窗体上控件都
显示到左上角去了,怎么做才能自适应分辨率大小,使控件的布局显示的好看些?
 
哦,漂亮妞儿来了,我去补个装先。[:D]
 
其实与分辨率没有关系,而与字体分辨率有关。大字体为120pixels/inch,小字体
为96picels/inch。Delphi中Sizable窗体肯定会出现,而在Dialog窗体中就不会有
这个问题。
 
To barton:
什么呀。我说的是我800*600下的窗体上GroupBox控件正好充满整个窗体,而在
1024*768下就跑到左上角去了,而不充满窗体了!
和字体关系不大。
 
设置窗体位置到屏幕中间.
 
self.top:=0;self.left:=0;
self.width:=screen.width;
self.height:=screen.height;
 
不是那意思了,我的话你们不明白?
·我得窗体是充满屏幕的!
·但是窗体上的控件位置在不同分辨率下显示的位置就不一样!!!!!!
气死我了。
 
这位就不是写程序的料.
算了放弃吧.
控件位置显然会随屏幕分辨率变化而移动,不变那才叫怪呢!

你你你到底要干啥?你的话谁也不明白.
咱别理它了.
 
调整控件的 Anchors 属性

你会满意的,不然只有调整top,left,height,width属性了
 
把Form的Position属性指定为poScreenCenter
Scaled属性指定为False
就可以了!
 
form.position:=poScreenCenter;
form.Scaled:=false;
 
改天给你个函数
 
HANFI说的太对了。
 
Delphi Form 里自己就有这样的方法 ScaleBy
var
LastWidth : integer;

procedure TForm1.FormResize(Sender: TObject);
begin
Form1.ScaleBy(Width, LastWidth);
LastWidth := Width;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
LastWidth := Width;
end;

但是会有四舍五入的误差,最好去 Down 一个 TResizer 控件效果最好
 
顶部