界面显示问题(100分)

  • 主题发起人 wingbroken
  • 开始时间
W

wingbroken

Unregistered / Unconfirmed
GUEST, unregistred user!
问一个菜问题,我现在在1024x768分辨率下开发软件,在800x600下界面显示就有些问题,
主要是弹出窗体显示太大,要手动调整一下才能显示完全,在768x640就更不用说了,请问
有什么较好的办法可以解决吗?
要是按弹出窗体都最大化,低分辨率下开发的界面在高分辨率下又留白太多了?怎办?
 
运行开始时先获得系统分辨率,然后修改各控件的位置和大小
要得到显示器的分辨率,由下列程序得到:
var
x:longint;
a:string;
begin
x := GetSystemMetrics(SM_CXSCREEN);
Str(x,a);
Label1.Caption := '显示器水平分辨率' + a;
x := GetSystemMetrics(SM_CYSCREEN);
Str(x,a);
Label2.Caption := '显示器垂直分辨率' + a;
end;
 
realsoft的TrsFormGrow控件
 
to kenny.hu:修改所有控件尺寸和位置的话,岂不是很麻烦?有没有什么好的方法可以
改一下?
 
程序改变分辨率
 
你可以放几个panel,让他们的align是left,top等等。
这些panel都是自己调位置的,应该可以。
或者你在程序create时自己设定控件的位置,坐标用
客户区坐标就可以。
 
给你一个例子,是不随分辨率变化的例子:
procedure TForm1.FormCreate(Sender: TObject);
var
x, y: LongInt;
begin
form1.scaled := true;
//窗体可以缩放
x := getSystemMetrics(SM_CXSCREEN);
y := getSystemMetrics(SM_CYSCREEN);
//程序运行时获取目标机器的屏幕分辨率
if (x <> ScreenHeight) or (y <> ScreenWidth) then
//目标机器的屏幕分辨率与作者机器的屏幕分辨率不同
begin
form1.height:=form1.height*x DIV ScreenHeight;
form1.width:=form1.width*y DIV ScreenWidth;
scaleBy(x,ScreenHeight);
//调用窗体的scaleBy函数,将窗体大小变为初始大小的x/ ScreenHeight倍。
//这是本程序的关键技巧,同时缩放的包括窗体上各组件和字体。
end;
end;
 
字体一般用什么呀?
好的软件字体应不会随WINDOWS选择大小字体而改变!
 
字体可以这样设置:
Form1.Font.Charset:=GB2312_CHARSET;
Form1.Font.Size:=字体大小 就可以了!
 
多人接受答案了。
 
顶部