Размер диалогового окна
Давайте начнем с Microsoft Windows User Interface Guidelines (Руководящие Принципы Построения Интерфейса Пользователя Microsoft Windows) и допустим, что мы создаем диалоговое окно, содержащее компонент TMemo, занимающий большую часть площади формы и кнопки OK и Cancel, размещенные в ее нижней части.
Несколько примечаний из "Принципов":
- Диалоговые окна должны быть основаны на базовых диалоговых модулях, dialog base units (DBU), которые создаются с учетом размера шрифта и разрешения экрана.
- Диалоговые окна должны быть созданы, по возможности, на основе одного из нескольких стандартных размеров. Для нашего окна мы используем размер 212x188 DBU.
- Все элементы управления должны распологаться как минимум на расстоянии 7 DBU от края окна.
- Все элементы управления должны иметь между друг другом зазор размером минимум 4 DBU.
- Кнопки должны иметь высоту 14 DBU. (Про ширину кнопок "принципы" умалчивают; в обычном случая я использую кнопки шириной 40 DBU.)
Вот необходимая для создания формы и элементов управления информация, которую мы можем получить во время выполнения приложения:
|
|
procedure TMyForm.FormCreate(Sender: TObject);varBaseUnit, Margin, Spacing, BtnW, BtnH: Integer;beginBaseUnit := 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; |
Данный код позволяет создать диалоговое окно с правильными размерами и пропорциями, независимо от разрешения экрана и шрифтов.
- Steve Schafer [000976]
Содержание раздела