2009-09-16 13 views
8

Tenemos algunas aplicaciones heredadas que se escribieron en Delphi 7. Hemos tenido algunas solicitudes a lo largo de los años para admitir la configuración personalizada de dpi de escritorio en estas aplicaciones, pero hemos podido esquivar la viñeta hasta saberlo. Bueno, no podemos más.¿Cómo se admite la configuración personalizada de DPI de escritorio en aplicaciones Delphi 7?

Cuando los usuarios configuran sus escritorios para decir 120 ppp, algunos de los controles "se caen" de la aplicación o se extienden más allá de lo visible son de la forma y específicamente anclados en el borde derecho de su elemento primario.

¿Qué puedo hacer para evitar este problema SIN cirugía de corazón abierto?

+0

La VCL simplemente no puede hacer eso sin una "cirugía a corazón abierto". La mejor solución que he visto hasta ahora se usa en Inno Setup, que tiene formularios con 'Scaled' establecido en' False' pero emplea funciones de escala personalizadas para los formularios en tiempo de ejecución. Esto hace que los programas de configuración creados por IS se vean muy bien en configuraciones de DPI más altas. – mghie

Respuesta

1

Como probablemente sepa, este es un well known issue with Delphi forms and interactions with system font sizes.

El comportamiento predeterminado de un formulario Delphi es intentar escalar para respetar el entorno de escritorio del usuario (tiempo de ejecución). Sin embargo, esto puede tener efectos secundarios no deseados e indeseables, como ha descubierto.

Pero la propiedad Escalada (TRUE por defecto) se puede configurar FALSO para evitar esto, pero le recomiendo que lea ese primer artículo, y también considere the information in this article para determinar si esta es la solución correcta en su caso.

Si tiene suerte, simplemente configurar Scaled en FALSO en todos sus formularios puede ayudarle a llegar allí, si no en todo (lo que puede ser tedioso, pero no es exactamente cirugía a corazón abierto).

+0

Ah, me has ganado unos segundos, y tu respuesta es mejor/más completa. Eliminaré mi respuesta similar. :-) – robsoft

+3

-1 para la sugerencia de considerar simplemente configurar 'Escalado' a' Falso'. Uno puede hacer eso, pero solo con el cambio completo de tamaño de tiempo de ejecución y el reposicionamiento de todos los controles. Preferiblemente después de configurar la fuente del sistema adecuada (determinada en tiempo de ejecución) para cada formulario. No hay escalamiento o cambio de tamaño de tiempo de ejecución en absoluto es simplemente crueldad hacia aquellos con problemas de visión y/o pantallas con un alto DPI. – mghie

Cuestiones relacionadas