再说一句 经验
在98下 就算是你的分辨率是800,600 也不行
举个例子 比如说在 2000下 分辨率是800,600 你窗体 宽 500 高 400
到 98 下分辨率也是800,600 但窗体 宽 600 高 500 了 (不一定是实际大小)
你最好 这么写个函数
type
TfontControl = Class(Tcontrol)
Public
protery Font ;
end ;
procedure Zoom(const FrmWidth ,FrmHeight(你在设计时的窗体大小) : integer);
var
i : integer ;
x, y: LongInt;
tmpFrmWidth,tmpFrmHeight : integer ;
begin
//窗体可以缩放
x := 800;
y := 600;
//程序运行时获取目标机器的屏幕分辨率
if (x <> Screen.Height) or (y <> Screen.Width) then
//目标机器的屏幕分辨率与作者机器的屏幕分辨率不同
begin
form1.height:=form1.height*x DIV Screen.Height;
form1.width:=form1.width*y DIV Screen.Width;
scaleBy(x,ScreenHeight);
//调用窗体的scaleBy函数,将窗体大小变为初始大小的x/ ScreenHeight倍。
//这是本程序的关键技巧,同时缩放的包括窗体上各组件和字体。
end
else FrmWidth <> form1.width then
begin
tmpFrmWidth := FrmWidth ;
form1.width := FrmWidth ;
form1.height := frmHeight ;
scaleBy(FrmWidth,tmpFrmWidth)
For i := 0 to self.ControlCount-1 do
TFontcontrol(Self.Controls).Font.size := TFontcontrol(Self.Controls).Font.size
* (FrmWidth /tmpFrmWidth)
end;
end ;
写的 不太好 指告诉你个大概意思