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

📄 unit1.pas

📁 Delphi7编程80例(完全版)
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button2: TButton;
    ListBox1: TListBox;
    Button1: TButton;
    TrackBar1: TTrackBar;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
 
  public
  end;

var
  Form1: TForm1;


implementation

uses Math;

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  DevModeCount: Integer;             // 显示模式的数目
  DevModeInfo: ^TDevMode;            //指向显示模式信息的指针
  DevModeArray: TList;    // 显示模式信息结构列表
  begin
  DevModeArray := TList.Create;
  DevModeCount := 0;
  GetMem(DevModeInfo, SizeOf(TDevMode));
  {枚举显示模式}
  while EnumDisplaySettings(nil, DevModeCount, DevModeInfo^) do
  begin
    DevModeArray.Add(DevModeInfo);
    Inc(DevModeCount);
    ListBox1.Items.Add(IntToStr(DevModeInfo^.dmPelsWidth)+'x'+
                       IntToStr(DevModeInfo^.dmPelsHeight)+', '+
                       IntToStr(Trunc(IntPower(2, DevModeInfo^.dmBitsPerPel)))+
                       'colors,'+IntToStr(DevModeInfo.dmDisplayFrequency)+'hz');
   GetMem(DevModeInfo, SizeOf(TDevMode));
  end;
  FreeMem(DevModeInfo, SizeOf(TDevMode));
  ListBox1.ItemIndex := 0;
end;
{var dm:DEVMODE;
begin
 //以下几个是DEVMODE在改变屏幕分辨率时必须使用的几个必须设置的几个值;
with dm do
begin
 dmBitsPerPel:=16;
 dmpelswidth:=640;
 dmpelsheight:=480;
 dmDisplayFlags:=DM_INTERLACED;//前面的参数是彩色的,还可以是DM_GRAYSCALE(单色的);
 dmDisplayFrequency :=0;
end;
ChangeDisplaySettings(dm,0);
//ChangeDisplaySettings这个函数是非常强大的,所有与显示有关的操作都可以用这个函数来设置,
//这里只是在改变屏幕分辨率的小试牛刀而已;
}

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Case TrackBar1.Position Of
 0:Label1.Caption:='640×480';
 1:Label1.Caption:='800×600';
 2:Label1.Caption:='1280×1024';
 end;
end;

function DynamicResolution(X, Y: word;freq:word): BOOL;
var
  lpDevMode: TDeviceMode;
begin
  Result := EnumDisplaySettings(nil, 0, lpDevMode);
  if Result then
  begin
    lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
    lpDevMode.dmPelsWidth := X;
    lpDevMode.dmPelsHeight := Y;
    lpDevMode.dmDisplayFrequency:=freq;
    Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;  //更改成功,不能更改刷新频率
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Case TrackBar1.Position Of
 0: DynamicResolution(640, 480,80);
 1: DynamicResolution(800, 600,80);
 2: DynamicResolution(1280, 1024,80);
 end;
end;


end.

⌨️ 快捷键说明

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