formcreate()
var
  i:integer;
begin
  i:=screen.PixelsPerInch/96; 
  form.width:=form.width*i;
  form.height:=form.height*i 
end;

解决方案 »

  1.   

    错了
    应该是:
    formcreate()
    var
      i:integer;
    begin
      i:=screen.PixelsPerInch div 96; 
      form.width:=form.width*i;
      form.height:=form.height*i 
    end;
      

  2.   

    这是我编的一个函数
    在每一个窗体创建后执行
    const
      //设定程序设计期的分辨率
      //当用户的显示器与设计期分辨率不同时,窗体可以自适应。
      Orignwidth=1024; //不需要了
      Orignheight=768;procedure ScreenChange(Sender: TForm);
    var
      FontSize: Integer;
    begin
      FontSize := Sender.Font.Size;  if (Screen.Width <> OrignWidth) then
      begin
        Sender.Height := Longint(Sender.Height) * longint
        (Screen.Height) div OrignHeight;
        Sender.width := longint(Sender.width) * longint
        (Screen.Width) div OrignWidth;
        Sender.ScaleBy(Screen.Width , OrignWidth);
      end;
      If  Screen.PixelsPerInch <> 96 Then
        Sender.ScaleBy(Screen.PixelsPerInch, 96);  Sender.Font.Size := FontSize;
        End;
      End;}
    end;
      

  3.   

    直接改form.width同form.height是不行的。控件的位置大小都不会变,还是不好看。
    改分辨率是个可行的办法,但是就怕用户不愿意。
    些个函数,计算当前屏幕大小与设计时屏幕大小之比,确定控件位置和适当改变控件大小应该是最好的方法。使控件按黄金分割排列最好。
      

  4.   

    set the property of the form:
     scaled---> false
      

  5.   

    set the property of the form:
    scaled---> True