Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Establecer mi programa de 1024x768 (https://www.clubdelphi.com/foros/showthread.php?t=72437)

mantraxer21 18-02-2011 15:50:22

Establecer mi programa de 1024x768
 
Estimaados:

Quiero dejar mi aplicación para que funcione de 1024x768, de lo contrario enviar un mensaje al usuario para informar dicha resolución de trabajo.

He leido algo por ahi referente a los "Const"

const
RESOLUCION_HORIZONTAL: LongInt = 1024;
RESOLUCION_VERTICAL: LongInt = 768;

Y de Screen.Width y de Screen.Height

pero no me ha resultado mucho que digamos .


Saludos Cordiales

defcon1_es 18-02-2011 16:53:12

¿Y por qué no la cambias tu?
 
Hola, puedes forzar la resolución de tu programa, sin necesidad de informar al usuario.

Código Delphi [-]
unit Varios;

var
  Resoriginal: TDevMode; //Variable Global, para restaurar la resolución al cerrar la aplicacion
Resolucion_Horizontal, Resolucion_Vertical: Cardinal; //Variables para cargar la resolucion actual

...

procedure ComprobarResolucion(Restaurar: Boolean);
var NuevaRes:TDevMode;
begin
  if (Resolucion_Horizontal <> 0) and (Resolucion_Vertical <> 0)
  then begin
    if Restaurar
    then begin
      Windows.ChangeDisplaySettings(Resoriginal, CDS_UPDATEREGISTRY);
    end
    else begin
      // Añadido para la resolución
      // Guarda la resolución actual
      Windows.EnumDisplaySettings(Nil, Cardinal(-1), NuevaRes);
      // Si la resolución es diferente de 1024x768, la cambia
      If ( NuevaRes.dmpelsWidth  <> Cardinal(Resolucion_Horizontal) ) or
         ( NuevaRes.dmpelsheight <> Cardinal(Resolucion_Vertical) )
      then begin
        Windows.EnumDisplaySettings(Nil, Cardinal(-1), NuevaRes);
        NuevaRes.dmpelsWidth  := Resolucion_Horizontal;
        NuevaRes.dmPelsHeight := Resolucion_Vertical;
        if Windows.ChangeDisplaySettings(NuevaRes, CDS_UPDATEREGISTRY) <> 0
        then begin
          Resolucion_Horizontal := Resoriginal.dmpelsWidth;
          Resolucion_Vertical   := Resoriginal.dmPelsHeight;
          Windows.ChangeDisplaySettings(Resoriginal, CDS_UPDATEREGISTRY);
        end;
      end;
    end;
  end
  else begin
    Resolucion_Horizontal := Resoriginal.dmpelsWidth;
    Resolucion_Vertical   := Resoriginal.dmPelsHeight;
  end;
end;

defcon1_es 18-02-2011 16:57:30

Se me olvidó poner que en el Create de tu aplicación debes poner el código:
Código Delphi [-]
  
// Guarda la resolución original de windows antes forzarla a la que queramos
    Windows.EnumDisplaySettings(Nil, Cardinal(-1), Varios.ResOriginal);
Para guardar la resolución de windows antes de forzarla, y restaurarla al salir de tu programa.

newtron 18-02-2011 17:03:46

Yo lo que hago cuando necesito una resolución determinada es lo siguiente:

1º capturo la resolución actual

AnchoOriginal := GetSystemMetrics(SM_CXSCREEN);
AlturaOriginal := GetSystemMetrics(SM_CYSCREEN);

2º fuerzo la resolución a 1024x768

If (GetSystemMetrics(SM_CXSCREEN)<>1024) or (GetSystemMetrics(SM_CYSCREEN)<>768) then
SetScreenResolution(1024,768);

3º al cerrar lo dejo como estaba

SetScreenResolution(AnchoOriginal, AlturaOriginal);

Saludos


La franja horaria es GMT +2. Ahora son las 06:03:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi