各位大虾,小弟有个急手的问题,如何使form在不同的分辩率下,同样显示正常?(100分)

  • 主题发起人 主题发起人 hejianxun
  • 开始时间 开始时间
H

hejianxun

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,小弟有个急手的问题,如何使form在不同的分辩率下,同样显示正常?
小弟有一程序,在800*600下运行正常,但在1024*768下,控件全错了位。
希望那位大虾给以缓手,小弟不胜感激!!!
 
一般来说,在一种屏幕分辨率下设计的窗体换到另一种屏幕分辨率下去显示,
其大小会改变。要使窗体大小不依赖于屏幕分辨率,最简单的思路就是在运
行程序时将系统的屏幕分辨率设置为创建窗体时的屏幕分辨率,然后在退出
程序时再将屏幕分辨率恢复到初始值;还有一种思路是先比较两种分辨率大
小,再根据结果按比例扩大或缩小窗体。这两种方法各有优缺点:前者会影
响其他程序的显示,后者要做得完美就比较复杂,
需要修改窗体大小,各个控件的位置及字体大小等,
但这可以通过技巧来完美地解决。
看如下代码:
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);

end;
end;
 
不要把窗体设为全屏最大化显示
否则同意楼上,改变系统的分辨率
 
Form中的控件错位?那应该不是分辩率的问题!
我倒是碰到个这样的问题,是程序在Windows2000以上的操作系统下编绎后/
在Win98下显示出现了问题!
不知道为什么win98下Form会出现大小等的变化
 
我觉得跟你在写程序时的分辨率有关,如果保证win2000和win98有相同的分辨率,
应该不会出现显示上的问题。
 
谢谢,各位!!!
 
楼上的 manud :
在2000下的程序在98下会变形的(当然是一样的分辨率),你试试,
 

Similar threads

后退
顶部