为什么我程序的窗体在(WIN2000系统,17寸显示器,分辨率为800*600)环境下编写的,然后拿到WIN98下运行(15寸显示器,分辨率一样为800*600),主窗体居然出现滚动条,别的窗体虽然没出现滚动条,但字体变大了,窗体显示的效果也没有原始的效果呀。我试过了很多方法,都不能解决,好惨,明天就要交差了,HEIP!!!!
   希望高手们给多解决的方法和建议,谢谢!!!

解决方案 »

  1.   

    我们在设计网页的时候,常常会发现设计好了的表单在屏幕的显示分辨率更改了后,表单的布局就面目全非了。我们可以借助delphi的帮忙,来设计一个程序达到自动调整的目的。设计时,我们可以使用Interface部分定义屏幕的宽度和高度两个参数,然后通过程序来判断当前分辨率是否与设计分辨率相同,最后利用SCALE来达到重新调整表单布局的目的,下面是程序的主要原代码:
      Const
        Screenheight=1024;
        Screenwidth=758; //定义屏幕的原始分辨率  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 ,screen.width);
          end;
      end;
      

  2.   

    试试把Form的AutoScroll属性设为FALSE;
                Scaled属性设为FALSE;
      

  3.   

    呵呵,给你个代码,不是我写的,参考下
    const
      DefaultWidth = 800;
      DefaultHeight = 600;type
      TfrmJtBaseScale = class(TfrmJtBase)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  TMyControl = class(TControl);
    implementation{$R *.dfm}procedure TfrmJtBaseScale.FormCreate(Sender: TObject);
    var
      i: integer;
      a: real;
    begin
      if Screen.Width <> DefaultWidth then
      begin
        height:=longint(height)*longint(screen.height) div DefaultHeight;
        width:=longint(width)*longint(screen.width) div DefaultWidth;
        scaleby(screen.width , DefaultWidth);
        for i := 0 to self.ControlCount -1 do
        begin
          a := screen.Height / DefaultHeight * TMyControl(self.Controls[i]).Font.Size;
          TMyControl(self.Controls[i]).Font.Size := trunc(a);
        end;
      end;
    end;随分辨率改变
      

  4.   

    其实很简单,在设计时用控件的 Anchors 就可以实现。
      

  5.   

    更改使用的字符集Font.Charset = GB2312_CHARSET
      

  6.   

    你这样问题经常有
    procedure TfrmJtBaseScale.FormCreate(Sender: TObject);
    var
      i: integer;
      a: real;
    begin
      if Screen.Width <> DefaultWidth then
      begin
        height:=longint(height)*longint(screen.height) div DefaultHeight;
        width:=longint(width)*longint(screen.width) div DefaultWidth;
        scaleby(screen.width , DefaultWidth);
        for i := 0 to self.ControlCount -1 do
        begin
          a := screen.Height / DefaultHeight * TMyControl(self.Controls[i]).Font.Size;
          TMyControl(self.Controls[i]).Font.Size := trunc(a);
        end;
      end;
    end;
    我是这样解决和幸运星一样