1024*768下设计的窗体,到800*600下,有的控件显示不完整,主要是窗体右边的。好像整体窗体被放大了。如何 让自己做的程序能够自动适应不同大小及分辨率的屏幕呢?这应该是个常见问题,我们菜鸟就是不会。有人 说,软件启动时,将机器的屏幕分辨率改成与 程序设计时的分辨率一致,这个办法有问题吧。如果运行软件后,再切换到其他软件,会发现 整个系统的分辨率被修改了。这个办法 不是各种软件用的办法吧。
谢谢。

解决方案 »

  1.   

    程序启动时先检测一下当前的分辨率(screen.width和.height),根据分辨率的不同,给各个控件赋以不同的位置和字号。。这个办法比较笨,不过还不错。。另外可以多弄一些panel,align设置成left,right之类的,也可以实现一些自适应。。似乎还有比例尺的方法,不过偶不会,呵呵。
      

  2.   

    1、按照800×600设计
    2、尽量设置Align属性
    3、处理OnResize事件举例:如果有按钮,尽量放在ToolBar之类的容器上面……
      

  3.   

    自适应分辨率的窗体实现
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    const
      Orignwidth = 1024;
      Orignheight = 768;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Scaled := True;
      if Screen.Width <> Orignwidth then
      begin
        Height := LongInt(Height)*longInt(Screen.height) div orignheight;
        Width := LongInt(Width)*longInt(Screen.Width) div orignWidth;
        ScaleBy(Screen.Width,Orignwidth);
        ScaleBy(Screen.Height,Orignheight);
      end;
    end;end.