⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 disp01.pas

📁 特别方便的工具程序
💻 PAS
字号:
//调整显示器属性
unit Disp01;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StrUtils, StdCtrls, Menus, ComCtrls, DB, ADODB, Grids, DBGridEh;

type
  TDispForm = class(TForm)
    Label1: TLabel;
    cbRate: TComboBox;
    Label2: TLabel;
    Button1: TButton;
    Data00: TADOQuery;
    Data00S: TDataSource;
    DBGridEh1: TDBGridEh;
    MYDBase: TADOConnection;
    procedure SetMonitor(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    function CurRate: integer;
  public
    { Public declarations }
  end;

var
  DispForm: TDispForm;
implementation

uses Xeduser;

{$R *.DFM}

procedure TDispForm.SetMonitor(Sender: TObject);
var
  DM: TDeviceMode;
  I, N: Word;
  S1: string;
  C, X, Y, R: integer;
  Item: TListItem;
  Book: TBookMark;
begin
  Book := Data00.GetBookmark;
  MYDBase.Execute('Update Monitor Set 当前值=Null');
  Data00.Requery;
  Data00.GotoBookmark(Book);
  Data00.Edit;
  Data00['当前值'] := True;
  Data00.Post;
  Data00.FreeBookmark(Book);
  S1 := Data00['横向像素']; X := StrToInt(S1);
  S1 := Data00['纵向像素']; Y := StrToInt(S1);
  S1 := Data00['颜色位数']; C := StrToInt(S1);
  R := cbRate.ItemIndex;
  if (R = 0) or (R = 1) then R := -1 * R else begin
    S1 := cbRate.Items[R];
    S1 := LeftStr(S1, 4);
    S1 := Trim(S1);
    R := StrToInt(S1);
  end;
  FillChar(DM, Sizeof(DM), 32);
  ENumDisplaySettings(nil, 0, DM);
  DM.dmFields := dm_pelswidth or dm_pelsheight or dm_BitsPerPel or dm_DisplayFrequency;

  DM.dmBitsPerPel := C;
  DM.dmPelsWidth := X;
  DM.dmPelsHeight := Y;
  DM.dmDisplayFrequency := DWord(R);
  if ChangeDisplaySettings(DM, 2) = 0 then ChangeDisplaySettings(DM, 1);
end;

procedure TDispForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Data00.Close;
  SaveSite(Self, 'Set Rate');
end;

procedure TDispForm.FormCreate(Sender: TObject);
var
  DM: TDeviceMode;
  R: integer;
  FB, RS: string;
  P0, X0, Y0, Z0,
    X, Y, Z, C, i, j, W: Word;
  F: Boolean;
  S1: string;
  DC: HDC;
  Item: TListItem;
begin
  LoadSite(Self, 'Set Rate');
  DC := GetDC(Handle);
  P0 := GetDeviceCaps(DC, BITSPIXEL);
  X0 := GetDeviceCaps(DC, HORZRES);
  Y0 := GetDeviceCaps(DC, VERTRES);
  R := GetDeviceCaps(DC, VREFRESH);
  R := CurRate;
  if R = 0 then cbRate.ItemIndex := 0;
  if R = -1 then cbRate.ItemIndex := 1;
  if (R >= 60) then begin
    cbRate.ItemIndex := 0;
    RS := IntToStr(R);
    for i := 1 to cbRate.Items.Count - 1 do begin
      if Pos(RS, cbRate.Items[i]) > 0 then begin
        cbRate.ItemIndex := I;
        break;
      end;
    end;
  end;
  ReleaseDC(0, DC);
  I := 0;
  Data00.Open;
  repeat
    DM.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL or DM_DISPLAYFREQUENCY;
    F := EnumDisplaySettings(nil, I, DM);
    if F then begin
      C := DM.dmBitsPerPel;
      X := DM.dmPelsWidth;
      Y := DM.dmPelsHeight;
      W := 1;
      for J := 1 to C do W := W * 2;
      S1 := Format('%d', [C]);
      if C <= 15 then S1 := Format('%d 色', [W]);
      if C >= 16 then S1 := Format('%2d 位(增强色)', [C]);
      if C >= 24 then S1 := Format('%2d 位(真彩色)', [C]);
      FB := Format('%5d x%5d', [X, Y, Z]);
      if Data00.Locate('ID', I, []) then
        Data00.Edit else Data00.Append;
      Data00['ID'] := I;
      Data00['当前值'] := False;
      Data00['分辩率'] := FB;
      Data00['横向像素'] := X;
      Data00['纵向像素'] := Y;
      Data00['颜色位数'] := C;
      Data00['彩色描述'] := S1;
      if (C = P0) and (X = X0) and (Y = Y0) then
        Data00['当前值'] := True;
      Data00.Post;
    end;
    I := I + 1;
  until not F;
end;

function TDispForm.CurRate: integer;
var
  DeviceMode: TDeviceMode;
begin //当前刷新率
  EnumDisplaySettings(nil, Cardinal(-2), DeviceMode);
  Result := DeviceMode.dmDisplayFrequency;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -