PDA

Ver la Versión Completa : Cambios de Resolucion


Azra
29-03-2007, 18:29:49
Espero alguien pueda ayudarme un poco con esto
soy nuevo en la programacion con delphim estoy trabajando en un programa e inicialmente necesitaba se ejecutara en 800 x 600, cosa que pude implementar poniendo esl siguiente codigo:

procedure TForm1.FormCreate(Sender: TObject);
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;

begin
NuevaRes(800,600);
end;

end.

como ven, al entrar la aplicacion pasa la pantalla a 800 x 600, ahora mi problema radica, en como regresarlo a su configuracion original, despues de cerrar mi aplicacion

por cierto tambien necesito alguna idea de como agregar una contraseña al inicio de la aplicacion

gracias de antemano

//Lo edite para que Azra aprenda como debe colocar los Tag's que comenta Neftali mas abajo ;)

Neftali [Germán.Estévez]
29-03-2007, 18:44:16
Se me ocurre que antes de cambiar la resolución puedes guardarte la actual (para eso puedes revisar las propiedades Height y Width del objeto Screen).
En lugar de cerrar como haces ahora, primero oculta el form (Hide), luego cambia la resolución a la original (con los valores que has guardado antes)
y luego cierra.

No lo he probado, pero debería funcionar.

NOTA: Utiliza TAG's (http://neftali.clubdelphi.com/images/ResaltarSintaxisDelphi.png) cuando añadas código delphi.

jhonny
29-03-2007, 18:50:40
Alguna vez vi un codigo que me sirvio de la pagina de un escritor muy nombrado pero que no se porque ahora no recuerdo su nombre...

la cosa era asi:


procedure Escalar;
const
ancho = 1024; // Ancho en el momento del diseño
alto = 768; // Alto en el momento del diseño
begin
Height := Height * Screen.Height div alto;
Width := Width * Screen.Width div ancho;
ScaleBy(Screen.Width, ancho);
end;


Y si que funciona. ;)

Azra
29-03-2007, 19:15:18
Alguna vez vi un codigo que me sirvio de la pagina de un escritor muy nombrado pero que no se porque ahora no recuerdo su nombre...

la cosa era asi:

Código Delphi [-] (http://www.clubdelphi.com/foros/#) procedure Escalar; const ancho = 1024; // Ancho en el momento del diseño alto = 768; // Alto en el momento del diseño begin Height := Height * Screen.Height div alto; Width := Width * Screen.Width div ancho; ScaleBy(Screen.Width, ancho); end;


Y si que funciona. ;)

Grax, por la edicion de los tags, no vuelve a pasar

Supongo que meti el codigo donde no era, ya que no lo puedo compilar :p

el codigo que mostre inicialmente, lo estoy colocando en la opcion OnCreate de mi Form1

el que me pasaste tu, lo coloco en la misma seccion, eliminando el codigo anterior? (lo cual ya probe y me dio error) o lo agrego en la implementacion ?
:confused:

la ides de Neftali, supongo la podria implementar en la opcion OnDestroy del form1, pero no tengo idea de como quedaria el codigo de regreso a la resolucion anterior, asi como la adicion al codigo inicial oncreate para chequeo y guardado ( en pocas palabras entendi que hacer, pero no tengo idea de como hacerlo :p)

srry, pero como dije, soy noob

jhonny
29-03-2007, 19:19:52
(lo cual ya probe y me dio error)
En el OnCreate funcionaria pero... ¿Que error te dio? muestranos el error para poder saber que hacer para arreglar dicho código.

Azra
29-03-2007, 19:31:58
En el OnCreate funcionaria pero... ¿Que error te dio? muestranos el error para poder saber que hacer para arreglar dicho código.

Edito:

Efectivamente, estaba introduciendo mal el codigo......... cambiando los valores de estatus de la ventana a maximizado, asi como cambiando el codigo que me diste a 800 x 600, logre lo que buscaba, que es simular ejecucion en full screen, ahora solo necesito ver como evitar que "restauren" la ventana, o bien desabilitar el boton restaurar

por cierto, alguna idea de como ponerle una contraseña a la aplicacion, antes de que se ejecute?

sigo diciendo gracias por la ayuda, y sorry si resulto molesto

jhonny
29-03-2007, 19:44:37
La resolución que aparece en las constantes del codigo es simplemente la resolución que usas a la hora de diseñar la forma (No la resolución a la que quieres redimensionar los controles) para que el resto de el código capture la resolución en la que esta trabajando el usuario y en base a esos dos valores calcule el nuevo tamaño de los controles y los redefina él mismo.

Azra
29-03-2007, 19:52:27
Tienes toda la razon jhony, me ganaste a la edicion de mi post anterior ( no queria hacer spam), donde me di cuenta de lo que mencionas:

Edito:

Efectivamente, estaba introduciendo mal el codigo......... cambiando los valores de estatus de la ventana a maximizado, asi como cambiando el codigo que me diste a 800 x 600, logre lo que buscaba, que es simular ejecucion en full screen, ahora solo necesito ver como evitar que "restauren" la ventana, o bien desabilitar el boton restaurar

por cierto, alguna idea de como ponerle una contraseña a la aplicacion, antes de que se ejecute?

sigo diciendo gracias por la ayuda, y sorry si resulto molesto

jhonny
29-03-2007, 20:27:02
sigo diciendo gracias por la ayuda, y sorry si resulto molesto
Hombre nadie resulta molesto si se comporta entre los parámetros normales, pero de todas maneras te recomiendo que leas la guia de estilo ( http://www.clubdelphi.com/foros/guiaestilo.php ) para que a futuro tengas en cuenta... BIENVENIDO¡¡¡.

ahora solo necesito ver como evitar que "restauren" la ventana, o bien desabilitar el boton restaurar

Solo basta con que vayas a la propiedad BorderIcons de tu forma y pongas a biMaximize en False.

por cierto, alguna idea de como ponerle una contraseña a la aplicacion, antes de que se ejecute?
En cuanto a esto pues usa el buscador del foro seguramente encontraras bastante información al respecto.

Azra
29-03-2007, 20:43:15
Listo!!! :)
problema resuelto, mil gracias
ahora sigo con lo demas