Al diseñar formas en Delphi, a menudo es útil escribir el código para que su aplicación (formularios y todos los objetos) se vea esencialmente igual independientemente de la resolución de la pantalla.
Lo primero que debe recordar al principio de la etapa de diseño del formulario es si va a permitir que el formulario se escale o no. La ventaja de no escalar es que nada cambia en tiempo de ejecución. La desventaja de no escalar es que nada cambia en tiempo de ejecución (su formulario puede ser demasiado pequeño o demasiado grande para leerlo en algunos sistemas si no está escalado).
Si no va a escalar el formulario, establezca Escamoso a falso. De lo contrario, establezca la propiedad en True. Además, establecer Desplazamiento automático Falso: lo contrario significaría no cambiar el tamaño del marco del formulario en tiempo de ejecución, lo que no se ve bien cuando el contenido del formulario hacer cambiar tamaño.
Consideraciones importantes
Establezca la fuente del formulario en una fuente TrueType escalable, como Arial. Solo Arial le dará una fuente dentro de un píxel de la altura deseada. Si la fuente utilizada en una aplicación no es instalado en la computadora de destino, entonces Windows seleccionará una fuente alternativa dentro de la misma familia de fuentes para usar en lugar.
Establecer el formulario Posición propiedad de algo diferente a poDiseñado, que deja el formulario donde lo dejó en tiempo de diseño. Esto generalmente termina a la izquierda en una pantalla de 1280x1024, y completamente fuera de la pantalla de 640x480.
No agrupe los controles en el formulario: deje al menos 4 píxeles entre los controles para que un cambio de un píxel en las ubicaciones de los bordes (debido a la escala) no se muestre como controles superpuestos.
Para etiquetas de una sola línea que son alLeft o bien alineado Tamaño automático a cierto. De lo contrario, establezca Tamaño automático a falso.
Asegúrese de que haya suficiente espacio en blanco en un componente de la etiqueta para permitir cambios en el ancho de la fuente, un espacio en blanco que es el 25% de la longitud del actual cuerda La longitud de la pantalla es demasiado, pero segura. Necesitará al menos un 30% de espacio de expansión para las etiquetas de cadena si planea traducir su aplicación a otros idiomas. Si Tamaño automático es Falso, asegúrese de configurar el ancho de la etiqueta de manera adecuada. Si Tamaño automático es cierto, asegúrese de que haya espacio suficiente para que la etiqueta crezca por sí sola.
En las etiquetas multilínea y de palabras, deje al menos una línea de espacio en blanco en la parte inferior. Necesitará esto para detectar el desbordamiento cuando el texto se ajusta de manera diferente cuando el ancho de la fuente cambia con la escala. No asuma que debido a que está usando fuentes grandes, no tiene que permitir el desbordamiento de texto, ¡las fuentes grandes de otra persona pueden ser más grandes que las suyas!
Tenga cuidado al abrir un proyecto en el IDE con diferentes resoluciones. Las formas Píxeles por pulgada la propiedad se modificará tan pronto como se abra el formulario y se guardará en el DFM si guarda el proyecto. Es mejor probar la aplicación ejecutándola de forma independiente y editar el formulario con una sola resolución. La edición en diferentes resoluciones y tamaños de fuente invita a la deriva de componentes y problemas de tamaño. Asegúrese de configurar su Píxeles por pulgada para todos sus formularios hasta 120. El valor predeterminado es 96, lo que causa problemas de escala en una resolución más baja.
Hablando de deriva de componentes, no cambie la escala de un formulario varias veces, en tiempo de diseño o tiempo de ejecución. Cada cambio de escala introduce errores de redondeo que se acumulan muy rápidamente ya que las coordenadas son estrictamente integrales. A medida que las cantidades fraccionarias se truncan de los orígenes y tamaños del control con cada cambio de escala sucesivo, los controles parecerán arrastrarse hacia el noroeste y reducirse. Si desea permitir que sus usuarios vuelvan a escalar el formulario varias veces, comience con un formulario recién cargado / creado antes de cada escalado para que no se acumulen errores de escalado.
En general, no es necesario diseñar formularios en ninguna resolución en particular, pero es crucial que revise sus Apariencia en 640x480 con fuentes grandes y pequeñas, y en alta resolución con fuentes pequeñas y grandes, antes de lanzar tu aplicación Esto debería ser parte de su lista de verificación de pruebas de compatibilidad del sistema regular.
Preste mucha atención a cualquier componente que sea esencialmente de una sola línea. TMemos—cosas como TDBLookupCombo. El control de edición de varias líneas de Windows siempre muestra solo líneas completas de texto; si el control es demasiado corto para su fuente, un TMemo no mostrará nada en absoluto (un TEdit mostrará el texto recortado). Para tales componentes, es mejor hacerlos unos pocos píxeles demasiado grandes que ser un píxel demasiado pequeño y no mostrar ningún texto en absoluto.
Tenga en cuenta que todo el escalado es proporcional a la diferencia en la altura de la fuente entre el tiempo de ejecución y el tiempo de diseño, no La resolución de píxeles o el tamaño de la pantalla. Recuerde también que los orígenes de sus controles cambiarán cuando se escale el formulario: no puede agrandar los componentes sin moverlos un poco.
Anclajes, alineación y restricciones: VCL de terceros
Una vez que sepa qué problemas tener en cuenta al escalar formularios de Delphi en diferentes resoluciones de pantalla, estará listo para algunos codificación.
Cuando se trabaja con Delphi versión 4 o superior, varias propiedades están diseñadas para ayudarnos a mantener el aspecto y el diseño de los controles en un formulario.
Utilizar Alinear para alinear un control en la parte superior, inferior izquierda o derecha de un formulario o panel y hacer que permanezca allí incluso si cambia el tamaño del formulario, panel o componente que contiene el control. Cuando se cambia el tamaño del elemento primario, un control alineado también cambia el tamaño para que continúe abarcando el borde superior, inferior, izquierdo o derecho del elemento primario.
Utilizar Restricciones para especificar el ancho y alto mínimo y máximo del control. Cuando las restricciones contienen valores máximos o mínimos, no se puede cambiar el tamaño del control para violar esas restricciones.
Utilizar Anclas para garantizar que un control mantenga su posición actual en relación con un borde de su elemento primario, incluso si se cambia el tamaño del elemento primario. Cuando se cambia el tamaño de su padre, el control mantiene su posición con respecto a los bordes a los que está anclado. Si un control está anclado a los bordes opuestos de su padre, el control se estira cuando se cambia el tamaño de su padre.
procedimiento ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
empezar
F. Escalado: = Verdadero;
F.AutoScroll: = False;
F.Position: = poScreenCenter;
F.Font. Nombre: = 'Arial';
si (Pantalla. Ancho <> Ancho de pantalla) luego comience
F.Height: =
LongInt (F.Height) * LongInt (Pantalla. Altura)
div ScreenHeight;
F. Ancho: =
LongInt (F.Width) * LongInt (Pantalla. Anchura)
Div ScreenWidth;
F.ScaleBy (Pantalla. Ancho, ancho de pantalla);
final;
final;