Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как отследить изменения дисплея?

01.01.2007

Для этого необходимо создать обработчик для перехвата сообщения WM_DISPLAYCHANGE. Применяется это в тех случаях, если Ваше приложение зависит от разрешения экрана (например, приложение работает с графикой).

Далее следует пример обработчика сообщения:

type 
TForm1 = class(TForm) 
  Button1: TButton; 
private 
  procedure WMDisplayChange(var Message: TMessage); message WM_DISPLAYCHANGE; 
public 
{ Public declarations } 
end; 
 
var 
Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
procedure TForm1.WMDisplayChange(var Message: TMessage); 
begin 
  {Do Something here} 
  inherited; 
end;

Взято из https://forum.sources.ru


Эта программа отслеживает изменение характеристик экрана.

...
private
  procedure WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);
    message WM_DISPLAYCHANGE;
...
procedure TForm1.FormCreate(Sender: TObject);
var
  bp: integer;
begin
  bp := GetDeviceCaps(GetDC(0), BITSPIXEL);
  Form1.Caption := 'Бит на точку - ' + IntToStr(bp) +
    ' (' + FloatToStr(IntPower(2, bp)) +
    ' цветов). Разрешение ';
  Form1.Caption := Form1.Caption + 
 
    IntToStr(GetDeviceCaps(GetDC(0), HORZRES)) + 'X';
  Form1.Caption := Form1.Caption + 
    IntToStr(GetDeviceCaps(GetDC(0), VERTRES)) + ' ';
end;
 
procedure TForm1.WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);
var
  bp: integer;
begin
  bp := Msg.BitsPerPixel;
  Form1.Caption := 'Бит на точку - ' + IntToStr(bp) + 
    ' (' + FloatToStr(IntPower(2, bp)) + 
    ' цветов). Разрешение ';
  Form1.Caption := Form1.Caption + IntToStr(Msg.Width) + 'X';
 
  Form1.Caption := Form1.Caption + IntToStr(Msg.Height) + ' ';
end;

Автор: Даниил Карапетян (delphi4all@narod.ru)

Автор справки: Алексей Денисов (aleksey@sch103.krasnoyarsk.su)


type
  {...} 
  private 
    procedure WMDisplayChange(var msg: TMessage);
      message WM_DISPLAYCHANGE; 
  public 
  {...} 
  end; 
end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
procedure TForm1.WMDisplayChange(var msg: TMessage); 
begin 
  ShowMessage('Display settings changed!'); 
  inherited; 
end;
 

https://delphiworld.narod.ru/

DelphiWorld 6.0