При проектировании формы в Delphiчасто бывает полезно написать код, чтобы ваше приложение (формы и все объекты) выглядело практически одинаково независимо от разрешения экрана.
Первое, что вы хотите запомнить на раннем этапе разработки формы, это то, разрешите ли вы масштабировать форму или нет. Преимущество отсутствия масштабирования в том, что во время выполнения ничего не меняется. Недостатком не масштабирования является то, что ничего не меняется во время выполнения (Ваша форма может быть слишком маленькой или слишком большой для чтения в некоторых системах, если она не масштабируется).
Если вы не собираетесь масштабировать форму, установите Чешуйчатый ложно. В противном случае установите для свойства значение True. Кроме того, установите Автопрокрутка в False: обратное означало бы не изменять размер фрейма формы во время выполнения, что не очень хорошо выглядит, когда содержимое формы делать изменить размер.
Важные соображения
Установите для шрифта формы масштабируемый шрифт TrueType, например Arial. Только Arial даст вам шрифт в пикселе от желаемой высоты. Если шрифт, используемый в приложении, не является установлен на целевом компьютере, тогда Windows выберет альтернативный шрифт в том же семействе шрифтов для использования вместо.
Установите форму Позиция собственность на что-то другое, чем poDesigned, который оставляет форму, где вы оставили его во время разработки. Обычно это заканчивается слева на экране 1280x1024 и полностью отключает экран 640x480.
Не переполняйте элементы управления в форме - оставьте по крайней мере 4 пикселя между элементами управления, чтобы однопиксельное изменение границ (из-за масштабирования) не отображалось как перекрывающиеся элементы управления.
Для однострочных меток, которые alLeft или хорошо выровнен, установлен Авто размер к Истине. В противном случае установите Авто размер ложно.
Убедитесь, что в компоненте метки достаточно пустого пространства для изменения ширины шрифта - пустое пространство, составляющее 25% длины текущего строка длина дисплея слишком велика, но безопасна. Вам понадобится не менее 30% места для расширения для строковых меток, если вы планируете переводить свое приложение на другие языки. Если Авто размер False, убедитесь, что вы правильно установили ширину надписи. Если Авто размер Верно, убедитесь, что есть достаточно места, чтобы лейбл рос сам по себе.
В многострочных метках с переносом слов оставьте хотя бы одну строку пустого пространства внизу. Вам понадобится это, чтобы уловить переполнение, когда текст по-разному переносится, когда ширина шрифта изменяется при масштабировании. Не думайте, что поскольку вы используете большие шрифты, вам не нужно допускать переполнение текста - чьи-то большие шрифты могут быть больше ваших!
Будьте осторожны, открывая проект в IDE с разными разрешениями. Форма PixelsPerInch свойство будет изменено, как только форма будет открыта, и будет сохранено в DFM, если вы сохраните проект. Лучше всего протестировать приложение, запустив его в автономном режиме и редактировать форму только с одним разрешением. Редактирование с различными разрешениями и размерами шрифта вызывает проблемы смещения и размера компонентов. Убедитесь, что вы установили свой PixelsPerInch для всех ваших форм до 120. По умолчанию он равен 96, что вызывает проблемы с масштабированием при более низком разрешении.
Говоря о смещении компонентов, не масштабируйте форму несколько раз, во время разработки или время выполнения. Каждое изменение масштаба вносит ошибки округления, которые накапливаются очень быстро, поскольку координаты являются строго целыми. Поскольку дробные количества усекаются от происхождения и размеров элемента управления при каждом последующем масштабировании, элементы управления будут ползти на северо-запад и уменьшаться. Если вы хотите, чтобы пользователи могли масштабировать форму любое количество раз, начните с недавно загруженной / созданной формы перед каждым масштабированием, чтобы ошибки масштабирования не накапливались.
В общем, нет необходимости разрабатывать формы в каком-либо конкретном разрешении, но крайне важно, чтобы вы рассмотрели их перед разрешением 640x480 с большими и маленькими шрифтами и с высоким разрешением с маленькими и большими шрифтами ваше приложение. Это должно быть частью вашего регулярного контрольного списка проверки совместимости системы.
Обратите особое внимание на любые компоненты, которые по существу однострочные TMemos-вещи как TDBLookupCombo. Многострочный элемент управления Windows всегда показывает только целые строки текста - если элемент управления слишком короткий для шрифта, TMemo вообще ничего не покажет (а TEdit покажет вырезанный текст). Для таких компонентов лучше сделать их на несколько пикселей больше, чем на один пиксель слишком маленькими и не показывать текст вообще.
Имейте в виду, что все масштабирование пропорционально разнице в высоте шрифта между временем выполнения и временем разработки, не разрешение в пикселях или размер экрана. Помните также, что происхождение ваших элементов управления будет изменяться при масштабировании формы - вы не можете очень хорошо увеличить компоненты, не переместив их немного.
Якоря, выравнивание и ограничения: сторонние VCL
Когда вы знаете, какие проблемы следует учитывать при масштабировании форм Delphi на разных разрешениях экрана, вы готовы к некоторым кодирование.
При работе с Delphi версии 4 или выше, несколько свойств разработаны, чтобы помочь нам поддерживать внешний вид и расположение элементов управления в форме.
использование Align выровнять элемент управления по верхнему, нижнему левому или правому краю формы или панели и оставить его там, даже если изменяется размер формы, панели или компонента, который содержит элемент управления. При изменении размера родительского элемента размер выровненного элемента управления также изменяется, чтобы он продолжал охватывать верхний, нижний, левый или правый край родительского элемента.
использование Ограничения указать минимальную и максимальную ширину и высоту элемента управления. Когда ограничения содержат максимальные или минимальные значения, размер элемента управления нельзя изменить, чтобы нарушить эти ограничения.
использование Якоря чтобы гарантировать, что элемент управления сохраняет свою текущую позицию относительно края его родителя, даже если родительский размер изменен. При изменении размера родительского элемента элемент управления сохраняет свою позицию относительно ребер, к которым он привязан. Если элемент управления привязан к противоположным краям его родительского элемента, элемент управления растягивается при изменении размера родительского элемента.
процедура ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
начать
F. Scaled: = True;
F.AutoScroll: = False;
F.Position: = poScreenCenter;
F.Font. Имя: = 'Arial';
если (Экран. Ширина <> Ширина экрана) затем начните
F.Height: =
LongInt (F.Height) * LongInt (Экран. Высота)
div ScreenHeight;
F.Width: =
LongInt (F.Width) * LongInt (Экран. Ширина)
div ScreenWidth;
F.ScaleBy (Экран. Ширина, Ширина экрана);
конец;
конец;