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?
Al abrir todo lo que se ve así:
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:
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!
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
@Jeferson - Intenté con diferentes tamaños de fuente y no pude duplicar el problema. El triángulo amarillo no tiene texto, pero desaparece. – Arnold
+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. –