Советы для приложений Delphi с несколькими разрешениями

При разработке форм в Delphi часто бывает полезно написать код, чтобы ваше приложение (формы и все объекты) выглядело практически одинаково независимо от разрешения экрана.

Первое, что вы хотите запомнить на раннем этапе разработки формы, это то, собираетесь ли вы разрешать масштабирование формы или нет. Преимущество отсутствия масштабирования в том, что во время выполнения ничего не меняется. Недостатком отсутствия масштабирования является то, что ничего не меняется во время выполнения (ваша форма может быть слишком маленькой или слишком большой для чтения в некоторых системах, если она не масштабируется).

Если вы не собираетесь масштабировать форму, установите для Scaled значение False. В противном случае установите для свойства значение True. Кроме того, установите для AutoScroll значение False: обратное будет означать, что размер фрейма формы не изменяется во время выполнения, что не очень хорошо, когда содержимое формы изменяется. размер.

Важные соображения

Установите для формы масштабируемый шрифт TrueType, например Arial. Только Arial предоставит вам шрифт в пределах одного пикселя от желаемой высоты. Если шрифт, используемый в приложении, не установлен на целевом компьютере, Windows выберет альтернативный шрифт в пределах того же семейство шрифтов, которое будет использоваться вместо него.

Задайте для свойства формы Position значение, отличное от poDesigned , который оставляет форму там, где вы ее оставили во время разработки. Обычно это заканчивается слева на экране 1280×1024 и полностью за пределами экрана 640×480.

Не толкайте элементы управления в форме – оставьте на не менее 4 пикселей между элементами управления, чтобы изменение местоположения границ на один пиксель (из-за масштабирования) не отображалось как перекрывающиеся элементы управления.

Для одной строки метки, которые выровнены по alLeft или alRight , установите для AutoSize значение True. В противном случае установите для AutoSize значение False.

Убедитесь, что в компоненте метки достаточно пустого места для ширины шрифта. Изменения – пустое пространство, составляющее 25% длины текущей отображаемой строки, немного многовато, но безопасно. Если вы планируете переводить приложение на другие языки, вам потребуется не менее 30% места для расширения для строковых меток. Если для AutoSize установлено значение False, убедитесь, что вы действительно правильно установили ширину метки. Если AutoSize имеет значение True, убедитесь, что есть достаточно места для самостоятельного роста метки.

строки, метки с переносом слов, оставляйте внизу как минимум одну пустую строку. Это понадобится вам, чтобы поймать переполнение, когда текст переносится по-другому при изменении ширины шрифта при масштабировании. Не думайте, что из-за того, что вы используете большие шрифты, вам не нужно допускать переполнение текста – чужие большие шрифты могут быть больше вашего!

Будьте осторожны при открытии проекта в среде IDE с разным разрешением.. Свойство формы PixelsPerInch будет изменено, как только форма будет открыта, и будет сохранено в DFM, если вы сохраните проект. Лучше всего протестировать приложение, запустив его в автономном режиме, и отредактировать форму только с одним разрешением. Редактирование с различным разрешением и размером шрифта вызывает проблемы смещения компонентов и размеров. Убедитесь, что для параметра PixelsPerInch для всех форм установлено значение 120. По умолчанию установлено значение 96, что вызывает проблемы с масштабированием при более низком разрешении.

Говоря о смещении компонентов, не изменяйте масштаб формы несколько раз во время разработки или выполнения. Каждое изменение масштаба приводит к ошибкам округления, которые накапливаются очень быстро, поскольку координаты являются строго целыми. Поскольку при каждом последующем масштабировании дробные количества отсекаются от исходных точек и размеров элемента управления, элементы управления будут двигаться на северо-запад и уменьшаться в размерах. Если вы хотите разрешить пользователям изменять масштаб формы любое количество раз, начните с недавно загруженной/созданной формы перед каждым масштабированием, чтобы ошибки масштабирования не накапливались.

В общем, нет необходимости разрабатывать формы с каким-либо конкретным разрешением, но очень важно, чтобы вы проверяли их внешний вид при разрешении 640×480 с большими и мелкими шрифтами и с высоким разрешением с мелкими и крупными шрифтами, прежде чем выпускать приложение. Это должно быть частью вашего регулярного контрольного списка тестирования совместимости системы.

Обратите особое внимание на любые компоненты, которые по сути являются однострочными TMemos— такие вещи, как TDBLookupCombo . Элемент управления многострочным редактированием Windows всегда показывает только целые строки текста – если элемент управления слишком короткий для своего шрифта, TMemo вообще ничего не покажет ( TEdit покажет обрезанный текст). Для таких компонентов лучше сделать их на несколько пикселей больше, чем на один пиксель меньше, и вообще не отображать текст.

Имейте в виду. что все масштабирование пропорционально разнице в высоте шрифта во время выполнения и времени разработки, а не разрешению в пикселях или размеру экрана. Помните также, что происхождение ваших элементов управления будет изменено при масштабировании формы – вы не можете делать компоненты больше, не перемещая их немного.

Якоря, выравнивание и ограничения: сторонний VCL

Как только вы узнаете, какие проблемы следует учитывать при масштабировании форм Delphi на разных разрешениях экрана, вы готовы к написанию кода.

При работе с Delphi версии 4 или выше несколько свойств разработаны, чтобы помочь нам сохранить внешний вид и расположение элементов управления в форме.

Используйте Align , чтобы выровнять элемент управления по верхнему, нижнему левому или правому краю формы или панели и оставить его там, даже если размер формы , панель или компонент, содержащий элемент управления, изменяется. При изменении размера родительского элемента размер выровненного элемента управления также изменяется так, чтобы он продолжал охватывать верхний, нижний, левый или правый край родительского элемента.

Используйте Ограничения , чтобы указать минимальную и максимальную ширину и высоту элемента управления. Когда ограничения содержат максимальные или минимальные значения, размер элемента управления нельзя изменить, чтобы нарушить эти ограничения.

Используйте Anchors , чтобы убедитесь, что элемент управления сохраняет свое текущее положение относительно края его родительского элемента, даже если размер родительского элемента изменен. Когда размер его родителя изменяется, элемент управления сохраняет свое положение относительно краев, к которым он привязан. Если элемент управления привязан к противоположным краям своего родительского элемента, элемент управления растягивается при изменении размера его родительского элемента.

 процедура ScaleForm 
(F: TForm ; ScreenWidth, ScreenHeight: LongInt);
begin
F.Scaled: = True;
F.AutoScroll: = False;
F.Position: = poScreenCenter;
F.Font.Name: = 'Arial';
if (Screen.Width ScreenWidth), то начинаем
F.Height: =
LongInt (F .Height) * LongInt (Screen.Height)
div ScreenHeight;
F.Width: =
LongInt (F.Width) * LongInt (Screen.Width)
div ScreenWidth;
F.ScaleBy (Screen.Width, ScreenWidth);
end;
end;

Оцените статью
recture.ru
Добавить комментарий