Идёт загрузка страницы...

htp://aptem.net.ru
Хотите раскрутить свой сайт в Яндекс и Google?
Недорогое и качественное продвижение сайта от 50$




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

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

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

  1. Диалоговые окна должны быть основаны на базовых диалоговых модулях, dialog base units (DBU), которые создаются с учетом размера шрифта и разрешения экрана.
  2. Диалоговые окна должны быть созданы, по возможности, на основе одного из нескольких стандартных размеров. Для нашего окна мы используем размер 212x188 DBU.
  3. Все элементы управления должны распологаться как минимум на расстоянии 7 DBU от края окна.
  4. Все элементы управления должны иметь между друг другом зазор размером минимум 4 DBU.
  5. Кнопки должны иметь высоту 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;

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

- Steve Schafer [000976]




Материалы, которые находятся на этой страничке, любезно предоставлены Игорем Ивановым

РЕКЛАМНЫЙ БЛОК
     © 2007    APTEM.NET.RU    Все права защищены