DELPHI7的程序如何实现在不同分辨率下让窗口自适应不同的屏幕分辨率? 谁能帮忙让我的程序实现在不同屏幕分辨率电脑上运行时窗口始终适应屏幕大小?在网上看到不很多相关的解决方案可我还是搞不明白,详细该如何实现。希望能得到热心人士的帮忙。最好能加我QQ:172515968帮忙。谁能帮忙?我这点分全拿去了。哈哈,我发贴时只允许给这么多,不过解决了我会追加的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按800*600做一个Form,在OnCreate的时候判断Screen.Width & Height用Form.ScanBy(); ok align属性可以让控件始终靠一个方向或全方向充满它的容器Anchors属性可以让控件始终靠几个个方向与它的容器同进退(保持固定距离地充满) 适应屏幕大小分为以下几部分:1.自动调整窗体大小 在窗体创建或显示时判断屏幕的大小,之后程序再根据些信息计算窗体应该占用多大,位置是在哪里 如:窗体打开后默认为占用屏幕的高宽各一半,并且居中 在窗体的OnCreate中写如下代码: Form1.Left:=Screen.width/4; Form1.top:=Screen.height/4; Form1.width:=Screen.width/2; Form1.height:=Screen.Height/2;2.自动调整控件布局(位置,大小等) 使用控件的Align属性可自动调整控件布局。 比如一个Memo,需要固定在窗体下方,左右占满窗体,则只需要设置它的Align属性为alBottom即可。 这里还有一些技巧:比如TButton控件没有Align属性,可以这样做:如希望按钮始终在窗体的右下方: 在窗体上添加一个Panel1,去掉Panel的Caption属性,设置Panel的Align=alBottom 在Panel1上再添加一个Panel2,设置Panel2的Align=alRight,在Panel2上添加Button,这样经过两个Panel包容,Button就可以始终保持在窗体的右下方了。 由于Panel在界面上突起了一个厚度,那么设置Panel的BevelOuter属性为bvNone即可。 3.自动调整控件大小 有些控件在设置其align=alCllien的条件下能够根据其父控件自动调整大小,但不能自动调整大小的控件更多,比如Edit,比如ProgressBar,这些控件为了能够适应变化的窗体大小,只能在窗体的OnResize事件中通过写代码的方式来自动调整大小了。 如果你要求的比较复杂,可以使用组件,组件考虑的比较全面,效果还是不错的。请加入QQ高级群:9642802,在群的共享里有个组件"EasySize",组件的作用是控制窗口在不同分辨率下窗口都能成比例的缩放,窗口中的控件也会随窗口的大小变化,自动成比例缩放; 使用方法很简单,拖个控件放到界面上,2句代码搞定。 1、FormCreate事件中: FormResizer1.InitializeForm; 2、FormResize事件中: FormResizer1.ResizeAll; 加入群后,找管理员大海! procedure TForm1.FormCreate(Sender: TObject); begin form1.Width :=screen.Width *倍率 ; form1.Height :=screen.Height*倍率 ; end; const ScreenWidth: LongInt = 800; ScreenHeight: LongInt = 600; {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin scaled := true; if (screen.width <> ScreenWidth) then begin height := longint(height) * longint(screen.height) div ScreenHeight; width := longint(width) * longint(screen.width) div ScreenWidth; scaleBy(screen.width, ScreenWidth); end; end; 都给了那么多方案了,还....要不你就直用 easysize 这个组件吧 SQL Image 二进制流转换问题 【CSDN开心辞典】Delphi版有几个小版块? 为什么这个存储过程执行那么慢?大虾救救我,郁闷啊! 关于dcc32的高级知识问题 请教一个Delphi与foxpro数据库的删除问题,高手帮帮忙啊!!分不够再加 新来的! 如何把以个日期时间插入数据库中啊? 这个样子怎么实现 在D6+Access2000中怎么样创建表 请问结婚的delphi程序员,老公过生日买什么礼物好?UP不一定有分! 求火星文转换器源代码(或火星文字库)! 含有英文字母與中文的字串,如何轉大寫呢?
在OnCreate的时候判断
Screen.Width & Height用Form.ScanBy(); ok
Anchors属性可以让控件始终靠几个个方向与它的容器同进退(保持固定距离地充满)
1.自动调整窗体大小
在窗体创建或显示时判断屏幕的大小,之后程序再根据些信息计算窗体应该占用多大,位置是在哪里
如:窗体打开后默认为占用屏幕的高宽各一半,并且居中
在窗体的OnCreate中写如下代码:
Form1.Left:=Screen.width/4;
Form1.top:=Screen.height/4;
Form1.width:=Screen.width/2;
Form1.height:=Screen.Height/2;
2.自动调整控件布局(位置,大小等)
使用控件的Align属性可自动调整控件布局。
比如一个Memo,需要固定在窗体下方,左右占满窗体,则只需要设置它的Align属性为alBottom即可。
这里还有一些技巧:比如TButton控件没有Align属性,可以这样做:如希望按钮始终在窗体的右下方:
在窗体上添加一个Panel1,去掉Panel的Caption属性,设置Panel的Align=alBottom
在Panel1上再添加一个Panel2,设置Panel2的Align=alRight,在Panel2上添加Button,这样经过两个Panel包容,Button就可以始终保持在窗体的右下方了。
由于Panel在界面上突起了一个厚度,那么设置Panel的BevelOuter属性为bvNone即可。
3.自动调整控件大小
有些控件在设置其align=alCllien的条件下能够根据其父控件自动调整大小,但不能自动调整大小的控件更多,比如Edit,比如ProgressBar,这些控件为了能够适应变化的窗体大小,只能在窗体的OnResize事件中通过写代码的方式来自动调整大小了。
请加入QQ高级群:9642802,在群的共享里有个组件"EasySize",组件的作用是控制窗口在不同分辨率下窗口都能成比例的缩放,窗口中的控件也会随窗口的大小变化,自动成比例缩放; 使用方法很简单,拖个控件放到界面上,2句代码搞定。
1、FormCreate事件中:
FormResizer1.InitializeForm;
2、FormResize事件中:
FormResizer1.ResizeAll; 加入群后,找管理员大海!
begin
form1.Width :=screen.Width *倍率 ;
form1.Height :=screen.Height*倍率 ;
end;
const
ScreenWidth: LongInt = 800;
ScreenHeight: LongInt = 600;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
scaled := true;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) div ScreenHeight;
width := longint(width) * longint(screen.width) div ScreenWidth;
scaleBy(screen.width, ScreenWidth);
end;
end;
都给了那么多方案了,还....要不你就直用 easysize 这个组件吧