如何实现程序全屏显示,而之前窗体上的控件排列不会出现问题?  BorderStyle := bsNone;
  WindowState := wsMaximized;

  form1.width:=screen.width;   
  form1.height:=screen.height;都不能达到我想要的效果。虽然全屏了,可是控件摆放也全乱了。
我的窗体是按照1024*768大小设置的,如何能够像一些游戏程序一样,当显示器的分辨率不是1024*768这种比例时,也按照这种比例全屏显示窗体,而将其它不能覆盖的地方变成黑的?

解决方案 »

  1.   

    记录之前控件位置,窗体全屏后重新计算控件的top,left值
      

  2.   

    试试这个
    procedure TMAINForm.FormCreate(Sender:TObject);
    const
      ScreenWidth:LongInt = 800; //设计是屏幕大小
      ScreenHeight:LongInt = 600;
    var
      i:Integer;
    begin
      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);
        //要让每个子控制的字体改变到合适的大小
        for i := ControlCount - 1 downto 0 do
          TFooClass(Controls[i]).Font.Size := 9;
      end;
    end;
      

  3.   

    Direct Draw 设定分辨率。