PDA

Ver la Versión Completa : redimensionar forms


anubis
22-02-2014, 23:44:34
buenas. ya vi varios post referentes a esto a redimensionar forms en función del tamaño del monitor. cosa que alguno dice, que puede ser cierto, porque no se diseña desde un monitor o para un monitor más pequeño desde el principio porque luego pasa lo que pasa :-(
la pregunta final es si se puede sin tener que rehacer todo
gracias y perdón

ecfisa
24-02-2014, 02:29:55
Hola anubis.

Fijate si lo comentado en este enlace es lo que estas buscando: Aplicación maximizada descolocada en la pantalla (http://www.clubdelphi.com/foros/showthread.php?t=68469)

Saludos :)

anubis
26-02-2014, 03:47:30
Gracias eficsa, pero no veo muy bien el detalle, ya probe el codigo que pusiste:

procedure TForm.FormCreate(Sender: TObject); const Alto= 768; // 768, ... Ancho= 1024; // 1366, ... begin if Screen.PixelsPerInch = 96 then begin Height := Height * Screen.Height div Alto; Width := Width * Screen.width div Ancho; ScaleBy(Screen.Width,Ancho); end else if Screen.PixelsPerInch = 120 then begin Height := Height *Screen.Height div Alto; Height := Height+((Height*15) div 100); Width := Width * Screen.Width div Ancho; Width := Width+((Width*15) div 100); ScaleBy(Screen.Width,Ancho); Top := Top - 70; Left := Left - 70; end else begin Height := Height * Screen.Height div Alto; Width := Width * Screen.width div Ancho; ScaleBy(Screen.Width,Ancho); end; end;

Estoy probando sobre un windows xp virtualbox cambiando la resolucion y no funciona bien.
No se si es lo que se pretendia, pero desgraciadamente, lo que yo queria es que un proyecto realizado primeramente para pantallas algo grandes y que se ve bien, ahora que tengo que pasarlo a otra computadora con pantalla de resolucion mas pequeña, me lo escale como si fuera la grande, es decir, que se vea a razon de la pantalla sin tener que rediseñar de nuevo todo el form.

Si, cierto, y repito que teneis razon en otro post, que esas cosas se preveen porque luego pasa lo que pasa. :(

ecfisa
26-02-2014, 05:00:48
Hola anubis.

Siempre que el equipo a instalar la aplicación soporte la resolución en que se compiló, en Delphi me ha funcionado.

Ya que no lo había intentado antes, hice una prueba en Lazarus y tambíen funciona. Para realizarla, compilé un form con unos cuantos controles en resolución 1024x768 que es soportada por la mayoría.

El código de prueba que usé es similar al anterior:

procedure TForm1.FormCreate(Sender: TObject);
const
// Valores de resolución del monitor al momento de compilar
Ancho = 1024;
Alto = 768;
begin
if Screen.PixelsPerInch = 96 then
begin
Height := Height * Screen.Height div Alto;
Width := Width * Screen.width div Ancho;
ScaleBy(Screen.Width,Ancho);
end
else if Screen.PixelsPerInch = 120 then
begin
Height := Height *Screen.Height div Alto;
Height := Height+((Height*15) div 100);
Width := Width * Screen.Width div Ancho;
Width := Width+((Width*15) div 100);
ScaleBy(Screen.Width,Ancho);
Top := Top - 70;
Left := Left - 70;
end
else
begin
Height := Height * Screen.Height div Alto;
Width := Width * Screen.width div Ancho;
ScaleBy(Screen.Width,Ancho);
end;
end;

Luego pasé el ejecutable a un equipo de escritorio ejecutándolo en resoluciones desde 800x600 a 1280x768 y en todas mostró el form adaptado a la resolución.

Pero no pude probar con Windows XP virtualbox ya que no lo dispongo, tal vez allí tenga un comportamiento diferente.

Saludos :)

anubis
02-03-2014, 07:12:36
gracias eficsa,

lo que estoy viendo es que si aplico el codigo al programa que hice, en la resolucion que lo hice me sale todo descolocado, pero si cambio la resolucion de la pantalla a 1024x768, mas o menos, se ve bien.

Lo que entiendo es que el form lo tengo que hacer es como si fuera 1024x768, si lo hago a mas resolucion ya hay un problema porque se pierde en la pantalla.

Lo que no entiendo es el tema del screen.pixelsperinch=96, eso lo da el monitor o es una referencia standard porque ya probe a cambiar esa referencia y da lo mismo a efectos.


Un saludo y gracias amigo

ecfisa
02-03-2014, 08:19:15
Hola anubis.

Revisa los puntos que se mencionan en este enlace: Multi-Resolution Delphi Applications (http://delphi.about.com/od/standards/a/aa030700a.htm), aunque tratan sobre Delphi estimo que tienen que ser igualmente aplicables a Lazarus.

Saludos :)