2012-05-31 18 views
8

Intento darle al usuario una interfaz 'limpia y simple' ocultando algunos elementos. Solo una pequeña flecha indica que puede expandir una parte de la barra de menú principal. Cuando todo está cerrado se ve así:¿Por qué el escalado de controles difiere entre las PC?

enter image description here

Al abrir todo lo que se ve así:

enter image description here

Cada flecha se encuentra a eso SpeedButton se sienta en el lado izquierdo de un panel . Al hacer clic en el botón, el ancho se alterna entre el ancho del botón Speed ​​(cerrado) y el ancho del panel en el momento del diseño (abierto). El ancho del panel en designtime se almacena como una constante. Los show_hide_controls procedimiento se encarga de esto:

procedure TCompose_Main.show_hide_controls (key: string; Button: TSpeedButton; Panel: TPanel; width: Int32); 
begin 
    if GPA.iKey [key] = 1 
     then Panel.Width := width   // show panel, set panel to design width 
     else Panel.Width := Button.Width; // hide panel, set with to button width 
    Button.Glyph.Assign (nil); 
    Images_Left_Right.GetBitmap (GPA.iKey [key], Button.Glyph); 
end; // show_hide_controls // 

Esta rutina es llamada como sigue:

show_hide_controls ('Show Play Controls', // index to panel to show/hide 
        Enlarge_Play,   // Speedbutton requesting the enlargement/hide 
        Panel_Play,   // Panel to show/hide 
        cPlayWidth);   // Width of panel when shown 

Ahora varios usuarios informan de que una parte del panel está oculto, como:

enter image description here

Parece que el sistema operativo (Windows 7) juega algunos trucos con la escala. No puedo duplicar este error. ¿Alguien entiende lo que está sucediendo aquí? ¿Y hay una buena manera de programar contra esto de una manera independiente de la configuración?

Actualización Como GDF señaló correctamente en su respuesta, tiene que ver con la escala de las fuentes (panel de control> Pantalla). Esto se comporta un poco extraño en mi máquina. Cambiarlo a 150% tiene un impacto menor mientras que cambiarlo a 125% tiene un impacto importante. Como habrás adivinado, probé la primera y no la segunda escala. Solo cuando un usuario informó que podía escalar de 125% a 100%, pude replicar su error en mi máquina.

No pude encontrar una relación entre las fuentes y los problemas que he tenido como sugerido por varios residentes. Mi sistema todavía sufre de todas las pruebas que hice con Courier (no nuevo), Segoe UI, Tahoma y MS Sans Serif :-D. Quizás indirectamente porque los controles probablemente se cambian de tamaño para acomodar el texto.

¿Cómo manejar esto? No sé, comenzaré a experimentar y te dejaré saber si encuentro algo.

Gracias a todos por su ayuda!

+0

Ir realmente parece que el tamaño de la fuente es el factor principal, porque los controles que no tienen texto asociado (por ejemplo, los botones de imagen de la izquierda) no parecen verse afectados. Le sugiero que use la propiedad "Anclas" de los paneles para mantener su espacio relativo hacia la izquierda, de modo que al menos pueda reducir el impacto visual. – jfoliveira

+0

@Jeferson - Intenté con diferentes tamaños de fuente y no pude duplicar el problema. El triángulo amarillo no tiene texto, pero desaparece. – Arnold

+0

+1 y Star, este problema está muy extendido en nuestro desarrollo de Delphi y debe ser conocido por cualquiera que quiera construir una GUI verdaderamente compatible en Delphi. –

Respuesta

10

Si su problema es lo que creo, usted acaba de decir la respuesta. Windows 7 juega con la escala de ciertas fuentes. Cuando instala Win7 en una PC, comprueba el tamaño de su monitor y establece la configuración de escala "predeterminada" en 100% o 125%, dependiendo del tamaño de su monitor. El problema es que, al mismo tiempo, instala archivos de fuentes en la computadora. Utiliza un archivo de fuente diferente para los diferentes "valores predeterminados" para algunas de las fuentes.

Supongo que su aplicación está usando MS Sans Serif ... esta es una de las fuentes que obtiene diferentes instalaciones de archivos de fuentes dependiendo de la escala que Win7 esté usando (por defecto).

Para verificar que sus usuarios le digan que quiere que la escala esté configurada como la predeterminada, puede ver esto haciendo clic derecho en el escritorio y seleccionando "personalizar" luego "Mostrar" en la esquina inferior izquierda.

En el siguiente enlace se muestra cómo cambia el archivo en uso-fuente nuevo a la original http://www.rlvision.com/misc/windows_7_font_bug.asp

Sin embargo, me gustaría hacer un intento de bajar de esta fuente y actualizar los elementos de diseño para trabajar como deseada en Win7, así como los sistemas operativos anteriores

Esto es lo que yo creo que se trata de dada la limitada cantidad de información que ha proporcionado ...

actualización ya que me recuerda a cuando y mencionó los diferentes aspectos entre 125% v 150%. Solo quería asegurarme de que sabía que los dos archivos MS Sans Serif se ven mejor a diferentes escalas. Uno de los archivos de fuentes se ve muy bien al 100% y al 150%, pero horrible al 125%. El otro archivo de fuentes se ve muy bien al 125%, pero horrible a 100 y 150%.

No acabo de recordar qué archivo de fuente es cuál, pero sé que los culpables son 2 1) SSERIFF.FON 2) SSERIFE.FON

+0

Gracias. Intentaré esto y volveré a ti. – Arnold

+0

GDF: ¿Qué fuente predeterminada debe usarse? –

+1

@WarrenP: Tahoma, Verdana, UI de Segoe, lo que sea, cualquier tipo de letra vectorial True Type (que puede escalar sin "pasos"). Aún mejor: siempre use la fuente predeterminada del sistema operativo (que no ha sido MS Sans Serif desde ... oh, no recuerdo, ¿Win 3.1?) –

Cuestiones relacionadas