如何获得显卡分辨率,并使Form根据分辨率自动适应大小

解决方案 »

  1.   

    procedure TForm1.FormShow(Sender: TObject);
    var Width,Height:integer;
    begin
        Width := GetSystemMetrics(SM_CXSCREEN);
        Height := GetSystemMetrics(SM_CYSCREEN);
        form1.ClientWidth :=Width;
        form1.ClientHeight:=Height;
    end;
      

  2.   

    function DynamicResolution(Width,Height: word): BOOL;
    var
      lpDevMode: TDeviceMode;
    begin
      Result := EnumDisplaySettings(nil, 0, lpDevMode);
      if Result then
      begin
        lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
        lpDevMode.dmPelsWidth := Width;
        lpDevMode.dmPelsHeight := Height;
        Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if DynamicResolution(640, 480) then
        ShowMessage('Now is 640*480');
    end;
    用上面的函数可以改变分辨率,应该能解决你的问题.
      

  3.   

    to_失踪的月亮:要求分辨率变后,form大小和显示器屏幕大小的等比关系不变
      

  4.   

    不改变系统本身的参数,只是根据现有系统条件去让Form及Form上的控件适应