Ваша заявка зависит от виртуализации DPI. Ваше приложение не указало системе, что оно знает и поддерживает устройства с высоким разрешением DPI. В рассматриваемой машине используется масштабирование шрифта более 125%. Это высокая точка отключения DPI. Помимо этого масштабирования система виртуализирует масштабирование шрифтов для приложений, не поддерживающих DPI. От documentation:
В Windows Vista появилась функция, называемая виртуализацией DPI, которая обеспечивает уровень автоматической масштабируемости для приложений, не поддерживающих DPI. С помощью этой функции Windows масштабирует размер текста и элементов пользовательского интерфейса приложений, которые не поддерживают DPI, поэтому они имеют соответствующий размер при высоких настройках DPI без изменений в приложении. Это предотвращает потенциальные проблемы с удобством использования и удобочитаемости, возникающие, когда приложения слишком мала на высоких экранах DPI.
В Windows Vista до Windows 8 эта функция обеспечивает «виртуализированные» системные метрики и элементы пользовательского интерфейса не для приложений с поддержкой DPI, как если бы они работали с разрешением 96 DPI. Затем приложение отображает внешнюю поверхность 96 DPI, а DWM масштабирует полученное окно приложения в соответствии с настройкой DPI. Например, если параметр отображения DPI равен 144, DWM масштабирует окно приложения на 150% или 144/96.
Следствием этого является то, что система подделывает размеры экрана. Когда ваше приложение DPI виртуализировано, система сообщает о виртуализированных измерениях, а не о реальных измерениях.
Лучшей практикой является объявить ваше приложение высоким значком DPI и масштабировать пользовательский интерфейс в соответствии с настройками масштабирования шрифтов пользователя. Конечно, это будет для вас совершенно изменчивым. Возможно, это не тот, который вы хотите взять.
Другой вариант - попросить пользователя использовать уменьшенное масштабирование шрифта. Вероятно, они тоже не будут очень заинтересованы в этом.
Еще один вариант заключается в том, чтобы продемонстрировать ваше приложение, чтобы оно было осведомленным о высоком значении DPI и продолжало не масштабировать его. Тогда это, безусловно, запустится, но это не будет соответствовать предпочтениям масштабирования шрифта пользователя. Опять же, я предполагаю, что пользователь не будет удивлен.
Если вы в настоящее время не показываете свое приложение, значит, теперь это приведет к тому, что он не будет виртуализирован. И я имею в виду виртуализацию приложений, а не виртуализацию DPI. Несмотря на то, что вы действительно не должны запускать виртуализацию, вы можете столкнуться с проблемами, если отключите виртуализацию.
И Sertac предлагает другой вариант. Попросите пользователя применить параметры совместимости для вашего приложения, чтобы отключить виртуализацию DPI. Вы можете применить это к приложению, как и сегодня, без повторной компиляции и, по крайней мере, ваш пользователь сможет добиться прогресса.
По существу, есть проблемы с настройкой машины вашего пользователя. Если он имеет 768 вертикальных пикселей и около 140% масштабирования, это действительно 100% масштабированный эквивалент 550 пикселей. Это не очень много пикселей. Ваше приложение возражает, потому что экран слишком мал и, ну, возможно, это действительно так.
Это различные ответы здесь могут быть полезны для вас: How do I make my GUI behave well when Windows font scaling is greater than 100%
Пусть установить масштабирование отключить дисплей в настройках совместимости. –
Это означает, что ОС неправильно сообщает размеры экрана, а не Delphi 3. Delphi (даже 3) извлекает их через вызов API (в частности, GetSystemMetrics), поэтому он сообщает о том, что было сказано операционной системой. –