Недавно добавленные исходники

•  TDictionary Custom Sort  538

•  Fast Watermark Sources  903

•  3D Designer  1 830

•  Sik Screen Capture  1 478

•  Patch Maker  1 486

•  Айболит (remote control)  1 410

•  ListBox Drag & Drop  1 177

•  Доска для игры Реверси  21 920

•  Графические эффекты  1 357

•  Рисование по маске  1 296

•  Перетаскивание изображений  1 096

•  Canvas Drawing  971

•  Рисование Луны  814

•  Поворот изображения  771

•  Рисование стержней  815

•  Paint on Shape  493

•  Генератор кроссвордов  762

•  Головоломка Paletto  667

•  Теорема Монжа об окружностях  855

•  Пазл Numbrix  619

•  Заборы и коммивояжеры  849

•  Игра HIP  557

•  Игра Go (Го)  527

•  Симулятор лифта  549

•  Программа укладки плитки  509

•  Генератор лабиринта  565

•  Проверка числового ввода  524

•  HEX View  600

•  Физический маятник  528

•  Задача коммивояжера  560

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



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



Автор: Steve Schafer

Давайте начнем с 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;

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





Похожие по теме исходники

Посторонние окна WinAPI




Copyright © 2004-2022 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram