PDA

Ver la Versión Completa : Cambiar resolucion de windows


emeritos
01-04-2015, 12:28:13
Hola Dilferos.

Estoy utilizando delphi7 y me gustaria que al entrar en mi programa cambiase la resolucion de windows y al salir restaurarla. ¿ Como lo puedo hacer?

Gracias.

newtron
01-04-2015, 12:42:25
Hola.


// Lee configuración actual
XActual := GetSystemMetrics(SM_CXSCREEN);
YActual := GetSystemMetrics(SM_CYSCREEN);

// Pone resolución a 1024x768
SetScreenResolution(1024,768);

// Restaura resolución original
SetScreenResolution(XActual,YActual);


Saludos

Neftali [Germán.Estévez]
01-04-2015, 13:17:28
No se de qué tipo es tu programa y cual es el funcionamiento del día a día, pero me pregunto:
¿No sería más fácil ajustar tu programa a la resolución del sistema, que cambiar la resolución del sistema a tu programa?
:confused::o

¿Qué pasará con el resto de programa que están funcionando?
¿Qué pasa cuando el usuario hace ALT + TAB?
¿Sistemas Multimonitor?
¿Monitores secundarios?
...

emeritos
01-04-2015, 13:31:23
Eso lo he intentadop mil veces y por alguna razon en algunas resoluciones no me funciona.Por ejemplo yoprogramo con una resolucion de 1600X900 y al ejecutarse lo puede hacer enn 1600X900, 1280X1024, 1280*768, 1024*768. Pues bien el la primera no funciona biebn y yo lo realizo: (los compomentes de la pantalla no tiene nada de especial)


procedure Tfrmprincipalpista.FormCreate(Sender: TObject);
begin
ScaleForm(frmprincipalmesa,1600,900);


end;

procedure ScaleForm(F: TForm; ScreenWidth, ScreenHeight: LongInt);
begin
F.Scaled := True;
F.AutoScroll := False;
F.AutoSize := False;
F.Position := poScreenCenter;
F.Font.Name := 'Arial';
If (Screen.Width <> ScreenWidth) OR (Screen.Height <> ScreenHeight)
Then
Begin
F.Height := LongInt(F.Height) * LongInt(Screen.Height) div ScreenHeight;
F.Width := LongInt(F.Width) * LongInt(Screen.Width) div ScreenWidth;
//F.ScaleBy(Screen.Width,ScreenWidth)
F.ScaleBy(Screen.Height,ScreenHeight);
End;
end;


Gracias.

emeritos
01-04-2015, 13:36:45
Me sale un error en la funcion SetScreenResolution de no declarado.

Neftali [Germán.Estévez]
01-04-2015, 13:50:48
Eso lo he intentadop mil veces y por alguna razon en algunas resoluciones no me funciona.

¿No será porque dependerá de las resoluciones que admita el dispositivo destino (Tarjeta/Monitor)?

ecfisa
01-04-2015, 14:13:15
Hola emeritos.
Me sale un error en la funcion SetScreenResolution de no declarado.

Para Delphi 7, revisa estos enlaces:

Get and Set Screen Resolution (http://delphi.about.com/od/graphics/a/change_display.htm)
How to programmatically change the resolution of a specific monitor? (http://stackoverflow.com/questions/15101977/how-to-programmatically-change-the-resolution-of-a-specific-monitor)
Change the Screen Resolution? (http://www.swissdelphicenter.ch/torry/showcode.php?id=158)
Changing screen resolution (http://sourcecode-koreng.blogspot.com.ar/2008/12/changing-screen-resolution-delphi.html)


Pero, ¿ cambiar la resolución del S.O para que se ajuste a tu aplicación ? no me parece buena idea...

Saludos :)