Я пытаюсь предоставить пользователю «чистый и простой» интерфейс, скрывая некоторые элементы. Только маленькая стрелка означает, что он может расширить часть строки главного меню. Когда все закрыто, это выглядит так:
Когда вы все открываете, это выглядит так:
Каждая стрелка — это кнопка SpeedButton, расположенная в левой части панели. Нажав на кнопку, ширина переключается между шириной Speedbutton (закрыта) и шириной панели во время разработки (открыта). Ширина панели во время разработки сохраняется как константа. Процедура show_hide_controls обрабатывает это:
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 //
Эта процедура вызывается следующим образом:
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
Теперь несколько пользователей сообщают, что часть панели скрыта, например:
Похоже, операционная система (Windows 7) играет некоторые трюки с масштабирование. Я не могу повторить эту ошибку. Кто-нибудь понимает, что здесь происходит? И есть ли аккуратный способ запрограммировать это независимо от настроек?
ОбновлениеКак правильно указал GDF в своем ответе, это связано с масштабированием шрифтов (панель управления > Дисплей). Это ведет себя несколько странно на моей машине. Изменение его на 150% оказывает незначительное влияние, тогда как изменение его на 125% оказывает значительное влияние. Как вы могли догадаться, я тестировал первое, а не второе масштабирование.Только когда пользователь сообщил, что уменьшил масштаб со 125% до 100%, я смог воспроизвести его ошибку на своей машине.
Я не смог найти связь между шрифтами и проблемами, которые у меня есть, как было предложено несколькими респондентами. Моя система все еще страдает от всех тестов, которые я провел с Courier (не новым), Segoe UI, Tahoma и MS Sans Serif :-D. Возможно, косвенно, потому что размеры элементов управления, вероятно, изменены, чтобы вместить текст.
Как с этим справиться? Я не знаю, я начну экспериментировать и дам вам знать, если я что-то найду.
Спасибо всем за помощь!