Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cambios de Resolucion (https://www.clubdelphi.com/foros/showthread.php?t=41941)

Azra 29-03-2007 18:29:49

Cambios de Resolucion
 
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:

Código Delphi [-]
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 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:

Código Delphi [-]
 
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

Cita:

Empezado por jhonny
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 [-] 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

Cita:

Empezado por Azra
(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

Cita:

Empezado por jhonny
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:
Cita:

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

Cita:

Empezado por Azra
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¡¡¡.

Cita:

Empezado por Azra
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.

Cita:

Empezado por Azra
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


La franja horaria es GMT +2. Ahora son las 10:38:41.

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