Ver Mensaje Individual
  #3  
Antiguo 18-11-2009
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Reputación: 20
fidel Va por buen camino
Con esto puedes saber la resolución y cambiarla, adaptalo a tus necesidades

En este código se mira si es 800, 660 en cuyo caso se sube a 1024, 768 y después al terminar se deja como estaba

No se lo que ocurre si la tarjeta no soporta la resolución nueva, prueba tu mismo.

Código Delphi [-]
    { Public declarations }
  end;

var
  FMenu: TFMenu;
  W, H : integer;  //para coger resolución
  spCambioResolucion: string;  //para cambiar resolución

implementation

Uses UDM;

{$R *.dfm}

function NuevaRes(XRes, YRes: DWord): Integer;
var
  lpDevMode : TDeviceMode;
begin
  EnumDisplaySettings (nil, 0, lpDevMode);
  lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
  lpDevMode.dmPelsWidth := XRes;
  lpDevMode.dmPelsHeight := YRes;
  NuevaRes := ChangeDisplaySettings (lpDevMode, 0)
end;


En OnCreate para cambiarla
Código Delphi [-]
procedure TFMenu.FormCreate(Sender: TObject);
begin
  //coger resolución de pantalla
  W := Screen.Width;
  H := Screen.Height;
  spCambioResolucion := 'No';
  //si es 800 por 600 se cambia a 1024 por 768 y se anota el cambio
  if (W = 800) and (H = 600) then
    begin
      NuevaRes(1024, 768);
      spCambioResolucion := 'Si';
    end;
end;

En OnClose para dejarlo como estaba
Código Delphi [-]
procedure TFMenu.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //si se cambio la resolución que había de 800 por 600 volver a poner 800 por 600
  if spCambioResolucion = 'Si' then
    NuevaRes(800, 600);
end;
Responder Con Cita