如何让窗体内的控件不受分辨率影响

字体大小: 中小 标准 ->行高大小: 标准
窗体在不同分辨率下的大小和控件位置、变形问题:在800*600下做了一个FORM,但到640*480下一看却变了形,控件的相对位置都变了,不知道如何解决,请教诸位高手。

Another_eYes (1998-11-22 22:39:29)

implementation

const

ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}

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;

下面是解决字体大小的代码:

USES typinfo; {Add this to your USES statement.}

var

i: integer;

begin

for i := componentCount - 1 downto 0 do

with components[i] do

begin

if GetPropInfo(ClassInfo, 'font') <> nil then

font.size := (NewFormWidth DIV OldFormWidth) * font.size;

end;

end;

下面的函数可以解决问题:

Form:需要调整的Form,OrgWidth:开发时屏幕的宽度,OrgHeight:开发时屏幕的高度。

注意:需要把Form的Scaled设置为True。

procedure AdjustForm(Form: TForm; const OrgWidth, OrgHeight: integer);

begin

with Form do

begin

Width := Width * Screen.Width div OrgWidth;

Height := Height * Screen.Height div OrgHeight;

ScaleBy(Screen.Width, OrgWidth);

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

AdjustForm(Self,1280,1024);

end;

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68194.html