PDA

Ver la Versión Completa : Aplicación maximizada descolocada en la pantalla


jjoliveras
15-06-2010, 20:47:51
Hola a todos,

No encuentro la solución a un problema que tenemos y espero que alguien pueda darnos una idea de cual pueda ser.

Tenemos una aplicación que comenzamos en Delphi 7 y hace poco que la migramos a RAD 2007, hasta ahí no hubos "muchos problemas", pero lo curioso ha sido cuando hemos adquirido unos monitores de 22" widescreen para aprovechar mejor el nuevo IDE 2007 y nuestro problema es el siguiente.

Hemos observado, que cuando compilamos en estos equipos con estos monitores y lanzamos la aplicación en equipos de nuestros clientes con pantallas normales, la aplicación no se ajusta a los bordes de sus pantallas y queda desplazada hacia abajo y hacia la derecha, mientras que en nuestras pantallas y la de los clientes que tienen widescreen quedan totalmente ajustadas.

No encuentro información alguna y quisiera saber si alguien a tenido la misma experiencia o sabe como solucionarlo.

Espero sus noticias, un cordial saludo a todos y gracias de antemano.

BrunoBsso
15-06-2010, 21:08:35
Eso me pasó muchas veces. El tema es que vos en tu IDE ves que el formulario entra perfecto en la pantalla, pero no te fijas cuántos pixeles abarca.
Cuando lo abrís en un monitor con menor resolución, el programa tiene más pixeles que el monitor, así que no se muestra todo.
La solución es reconocer, con las propiedades de Screen, la resolución del monitor actual y adaptarlo.
Saludos.

PD: espero que se haya entendido, creo que no lo expliqué muy bien.

jjoliveras
15-06-2010, 21:32:36
Gracias BrunoBsso,

Probaré a hacerlo de esa forma y responderé con el resultado. Es posible que hayamos alargado la pantalla en diseño sin darnos cuenta y radique ahí el problema.

A veces las cosas más simples son la respuesta a los problemas.;)

Un saludo.

Lepe
15-06-2010, 22:50:58
Hay un detalle importante que se nos escapa, "el maximizado".

Si la ventana tiene form1.WindowState = wsMaximized, entonces es un problema de Delphi. Pero si la ventana por casualidad es un MDI, entonces es algo normal, bug con bastantes añitos encima.

http://www.clubdelphi.com/foros/showthread.php?t=1704&highlight=SPI_GETWORKAREA

Casimiro Notevi
15-06-2010, 23:02:09
Creo que si cuando está "maximizada" le das minimizar y luego a restaurar... se ajusta perfectamente :)
Al menos, eso es algo que he visto en algunos clientes.

jjoliveras
15-06-2010, 23:26:30
La ventana es el formulario principal, es MDI y ademas esta maximized y aunque minimices y maximices se queda exactamente en el mismo sitio. :(

BrunoBsso
16-06-2010, 03:50:22
Pero si la ventana por casualidad es un MDI, entonces es algo normal, bug con bastantes añitos encima.

http://www.clubdelphi.com/foros/showthread.php?t=1704&highlight=SPI_GETWORKAREA
Lástima. Supongo que vas a tener que ingeniártelas con código para arreglarlo.

Casimiro Notevi
16-06-2010, 11:18:46
[..]

Si la ventana tiene form1.WindowState = wsMaximized, entonces es un problema de Delphi. Pero si la ventana por casualidad es un MDI, entonces es algo normal, bug con bastantes añitos encima.

http://www.clubdelphi.com/foros/showthread.php?t=1704&highlight=SPI_GETWORKAREA


Me ha hecho recordar el hilo en el que se trata el tema de usar delphi o lazarus. (http://www.clubdelphi.com/foros/showthread.php?t=68305&highlight=facturlinex)

jjoliveras
18-06-2010, 11:29:36
Chicos, solucionado, muchas gracias. ;)

Os cuento, efectivamente si en tiempo de diseño, sobredimensionas la pantalla, al compilarlo e instalarlo en el cliente, la pantalla sale descolocada, pero solo en los equipos que tienen XP y pantalla normal (no widescreen), en los vistas, servers o windows 7, se quedan bien.

Corregi en tiempo de diseño el tamaño a 1024x768, compilo, se lo instalo y correcto.

Gracias por sus indicaciones.

Un saludo.

ContraVeneno
26-08-2010, 18:59:32
...
Corregi en tiempo de diseño el tamaño a 1024x768
..

¿qué fue lo que corregiste?
¿el diseño de la forma?, ¿la resolución de la pantalla?
¿?


---- edito

ya vi... intente cambiar la resolución de mi pantalla a 1042x768 pero igual seguía sin funcionar...

el problema no es la resolución. Si no mas bien el monitor. Si el monitor es "widescreen", se presenta el problema en monitores normales. Tendría que ser 4:3 en lugar de 16:9.
Es decir, compilar a 4:3 para que funcione en todos los monitores...
Si se compila a 16:9, se presenta el problema en monitores que son 4:3

ecfisa
26-08-2010, 23:23:25
Hola.

Hace bastante, copié estas líneas para adaptar el form principal a distintas resoluciones.
( lamento no recordar de donde las saqué ).

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;


Espero puedan servirle a quien esté interesado en este hilo.

Saludos.

RedVenom
10-01-2014, 20:11:38
Ecfisa en donde aplico ese código que colocaste??

ContraVeneno
10-01-2014, 20:35:32
Supongo que en el evento "Create" de la forma.... digo, no supongo, ahí dice:

procedure TForm.FormCreate(Sender: TObject);