Cómo cambiar la resolución de pantalla desde el programa

function DynamicResolution(X, Y: word): BOOL;
var  lpDevMode: TDeviceMode;
begin
  Result := EnumDisplaySettings(nil, 0, lpDevMode);
  if Result then
begin
    lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
    lpDevMode.dmPelsWidth := X;    lpDevMode.dmPelsHeight := Y;
    Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if DynamicResolution(800, 600) then    ShowMessage('Resolución a: 800*600');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    if DynamicResolution(640, 480) then    ShowMessage('Resolución a: 640*480');
end;