Jump to content


Photo

Como agrandar pantalla de acuerdo a la resolución de la PC ??


  • Please log in to reply
2 replies to this topic

#1 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts
  • LocationMéxico

Posted 15 October 2011 - 10:14 PM

Buen dia, recordando viejos tiempos atrás, con los sistemas ms-dos, cuando usabas una resolución grande de 1366 x 768 al abrir estos sistemas se ajustaban al tamaño de dicha resolución, ahora bien, con los sistemas en windows no pasa eso, en mi caso, lo que tengo que hacer es reducir la resolución de 800 x 600 ó 1024 x 768.

Ahora bien, me acabo de topar con un cliente que usa una resolución muy grande de 1680x1050  :o y el sistema se mira demasiado chico, lo que me exige es que se adapte de acuerdo a la resolución del monitor, alguien ha hecho eso en delphi ??

Uso D7.


  • 0

#2 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts
  • LocationMéxico

Posted 15 October 2011 - 10:47 PM

Encontre algo muy importante en este foro:
http://www.delphiacc...aciones-delphi/

Baje 2 archivos, 1 es el componente solo era arrastrarlo al formulario, pero no mire cambios al momento de compilarlo en una resolución de 1366 x 768

El 2do archivo es para buscar el .dfm y manipularlo para hacer el mismo efecto, pero tampoco no mire cambios al re-compilar el proyecto.

  • 0

#3 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 posts

Posted 17 October 2011 - 11:56 AM

Hola Agag,

Como explica ese artículo, si tu cliente quiere, con la misma resolución que ya tiene (1366 x 768), ver todas las aplicaciones a un mayor tamaño (no sólo el tamaño de los formularios sino el de las fuentes y por consiguiente el de los controles), tiene que aumentar los DPI del sistema, ésto puede buscarlo en el Panel de Control - Pantalla. En Windows 7 está en Panel de Control - Apariencia y personalización - Pantalla (en otros sistemas Windows en el artículo se explica dónde). Te he de decir que no todas las aplicaciones (incluso hablo de aplicaciones profesionales de uso muy extendido) muestran correctamente los controles cuando cambias los DPI, es una faceta por lo visto muy descuidada en programación  .

A nivel de Delphi, como se explica en el artículo, si dejas la propiedad Scaled de un TForm a TRUE, te escalará el formulario y todo lo que contenga en esa máquina con los DPI cambiados, pero no verás nada diferente en una máquina con los DPI por defecto (=96), como parece ser tu caso.

En cuanto al componente TFormAutoScaler que te has bajado, si lo sueltas sobre un formulario sin más, no añade nada diferente al comportamiento por defecto de Delphi, salvo que sirve para evitar algunos comportamientos desagradables en versiones antiguas de Delphi cuando Scaled es TRUE. Pero en tu máquina, al tener los DPI normales, no verás cambio alguno. Si quieres ver una simulación de cómo se verá el formulario en la máquina de tu cliente, altera entonces la propiedad RuntimeDPI, por ejemplo ponla a 120. Cuando esta propiedad está a 0, entonces se toman los DPI que tenga el sistema, cuando es igual o mayor a 36 (por debajo de esa cantidad no se efectúan escalados), entonces el formulario se escala a ese valor, puedes comprobarlo. Una vez lo hayas probado, deberás cambiarlo de nuevo a 0 para que se ajuste a los DPI de tu cliente, de lo contrario lo verá con los DPI fijos que le asignaste.

Lo de escalar los formularios de una aplicación tiene su miga, y te darás cuenta de que hay que trabajarse cada formulario, pues se dan algunos comportamientos extraños, como ya advierte el artículo, hay detalles que no se han cuidado lo suficiente en Delphi, yo diría que hasta Delphi 2010 no se corrigieron la mayoría de inconvenientes, aunque sigue habiendo componentes que no es escalan como deberían, tú mismo verás cuáles se ajustan a la nueva resolución y cuáles no (en el artículo se mencionan unos cuántos).

Si tienes alguna duda u observas algun comportamiento extraño en el componente no dudes en señalarlo y lo revisaré.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.