我在一种分辨率下编的程序,改变分辨率后界面需要重新调整,否则就很不整齐,如何解决?

解决方案 »

  1.   

    LONG ChangeDisplaySettings(    LPDEVMODE lpDevMode,
        DWORD dwflags
       );
      

  2.   

    可以得到显示器的当前分辨率:
    X := GetSystemMetrics(SM_CXSCREEN);// 得到显示器的水平分辨率
      Y := GetSystemMetrics(SM_CYSCREEN);// 得到显示器的垂直分辨率
      if (X=800) and (Y=600) then // 800*600 分辨率时,将程序窗口显示在主程序的中间
      begin
        ...
      end
      else
      begin
        ...
      end;
    我一般是在800*600分辨率下规划界面(根据实际运用情况的),控制好800*600下的界面后,当用户的分辨率是1024*768的时候,将界面居中
    form1.Position:=poScreenCenter;
    我就是这么做的,仅供参考 :)
      

  3.   

    const
      ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
      ScreenHeight: LongInt = 600;procedure Tyhzx.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;
      

  4.   

    介绍一种比较简单的办法,不用代码
    首先把你要显示的窗口设置为最大化,然后把需要的控件用panel之类的容器包容起来,然后再把容器的Align属性设为需要的对 齐方法就可以了,不用代码实现,但是效果就差了一点点!取舍自己定吧!