Articles

You should intercept WM_DISPLAYCHANGE message. Implementation of this idea is so:

type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    procedure MyMessage(var Msg: TWMDisplayChange); 
      message WM_DISPLAYCHANGE;
    { Private declarations }
  public
    { Public declarations }
  end;

...

procedure TForm1.MyMessage(var Msg: TWMDisplayChange);
begin
  Form1.Label1.Caption:=
    'New video mode is: '+
    IntToStr(Msg.Width)+' - '+
    IntToStr(Msg.Height);
end;