Размер диалогового окна

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: Steve Schafer

Давайте начнем с Microsoft Windows User Interface Guidelines (Руководящие Принципы Построения Интерфейса Пользователя Microsoft Windows) и допустим, что мы создаем диалоговое окно, содержащее компонент TMemo, занимающий большую часть площади формы и кнопки OK и Cancel, размещенные в ее нижней части.

Несколько примечаний из «Принципов»:

Диалоговые окна должны быть основаны на базовых диалоговых модулях, dialog base units (DBU), которые создаются с учетом размера шрифта и разрешения экрана.

Диалоговые окна должны быть созданы, по возможности, на основе одного из нескольких стандартных размеров. Для нашего окна мы используем размер 212×188 DBU.

Все элементы управления должны распологаться как минимум на расстоянии 7 DBU от края окна.

Все элементы управления должны иметь между друг другом зазор размером минимум 4 DBU.

Кнопки должны иметь высоту 14 DBU. (Про ширину кнопок «принципы» умалчивают; в обычном случая я использую кнопки шириной 40 DBU.)

Вот необходимая для создания формы и элементов управления информация, которую мы можем получить во время выполнения приложения:

procedure TMyForm.FormCreate(Sender: TObject);

var

BaseUnit, Margin, Spacing, BtnW, BtnH: Integer;

begin

BaseUnit := Canvas.TextHeight(‘0’); { 1 BaseUnit = 8 DBU определениям }

Width := (212 * BaseUnit) div 8;

Height := (188 * BaseUnit) div 8;

Margin := (7 * BaseUnit) div 8 — GetSystemMetrics(SM_CXFIXEDFRAME);

Spacing := (4 * BaseUnit) div 8;

BtnW := (40 * BaseUnit) div 8;

BtnH := (14 * BaseUnit) div 8;

Memo1.SetBounds(Margin, Margin, ClientWidth — 2 * Margin, ClientHeight —

2 * Margin — Spacing — BtnH);

OkButton.SetBounds(ClientWidth — Margin — Spacing — 2 * BtnW, ClientHeight —

Margin — BtnH, BtnW, BtnH);

CancelButton.SetBounds(ClientWidth — Margin — BtnW, ClientHeight — Margin —

BtnH, BtnW, BtnH);

end;

Данный код позволяет создать диалоговое окно с правильными размерами и пропорциями, независимо от разрешения экрана и шрифтов.

{/codecitation}

Добавить комментарий