Puede cambiar la resolución de la pantalla mediante código llamando a SetScreenResolution, una función que envuelve la API ChangeDisplaySettings. EL ejemplo usa GetSystemMetrics para obtener la resolución actual

Cambiando la resolución de la pantalla programáticamente

Copyright © 2000 Ernesto De Spirito

EurekaLog - Capture y registre cada excepción!

ChangeDisplaySettings

Para cambiar la resolución de la pantalla puede usar la siguiente función que envuelve la función API de Windows ChangeDisplaySettings. La función toma el ancho y altura deseados como parámetros y devuelve el valor de retorno de ChangeDisplaySettings (vea la documentación para más detalles).

uses Windows;

function SetScreenResolution(Ancho, Altura: integer): Longint;
var
  DeviceMode: TDeviceMode;
begin
  with DeviceMode do begin
    dmSize := SizeOf(TDeviceMode);
    dmPelsWidth := Ancho;
    dmPelsHeight := Altura;
    dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
  end;
  Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY);
end;

Puede usar ChangeDisplaySettings para cambiar otras propiedades de la pantalla como la profundidad color y la tasa de refresco.

Llamada de ejemplo

En el siguiente ejemplo primero obtenemos la resolución actual antes de establecerla en 800x600, y luego la restauramos llamando nuevamente a SetScreenResolution.

var
  AnchoViejo, AlturaVieja: integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
  AnchoViejo := GetSystemMetrics(SM_CXSCREEN);
  AlturaVieja := GetSystemMetrics(SM_CYSCREEN);
  SetScreenResolution(800, 600);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetScreenResolution(AnchoViejo, AlturaVieja);
end;
JfControls Library - para Delphi y C++ Builder