- •Источник: ©а.Я.Архангельский. 100 компонентов общего назначения библиотеки Delphi5
- •1. Общая характеристика компонентов-диалогов
- •2 Диалоги открытия и сохранения файлов — компоненты OpenDialog, SaveDialog, OpenPictureDialog, SavePictureDialog
- •3 Диалог выбора шрифта — компонент FontDialog
- •4 Диалог выбора цвета — компонент ColorDialog
3 Диалог выбора шрифта — компонент FontDialog
Компонент FontDialogвызывает диалоговое окно выбора атрибутов шрифта, представленное на рис. 7. В нем пользователь может выбрать имя шрифта, его стиль (начертание), размер и другие атрибуты.

Рис. 7 Диалоговое окно выбора атрибутов шрифта
Основное свойство компонента — FontтипаTFont, в котором вы можете задать при желании начальные установки атрибутов шрифта и в котором вы можете прочесть значения атрибутов, выбранные пользователем в процессе диалога.
Свойства MaxFontSizeиMinFontSizeустанавливают ограничения на максимальный и минимальный размеры шрифта. Если значения этих свойств равны 0 (по умолчанию), то никакие ограничения на размер не накладываются. Если же значения свойств заданы (обычно это целесообразно делать исходя из размеров компонента приложения, для которого выбирается шрифт), то в списке Размер диалогового окна появляются только размеры, укладывающиеся в заданный диапазон. При попытке пользователя задать недопустимый размер ему будет выдано предупреждение вида «Размер должен лежать в интервале ...» и выбор пользователя отменится.
Свойство Device определяет, из какого списка возможных шрифтов будет предложен выбор в диалоговом окне: fdScreen — из списка экрана (по умолчанию), fdPrinter— из списка принтера,fdBoth— из обоих.
Свойство Optionsсодержит множество опций:
|
fdAnsiOnly |
Отображать только множество шрифтов символов Windows, не отображать шрифтов со специальными символами |
|
fdApplyButton |
Отображать в диалоге кнопку Применить независимо от того, предусмотрен ли обработчик события OnApply |
|
fdEffects |
Отображать в диалоге индикаторы специальных эффектов (подчеркивание и др.) и список Цвет |
|
fdFixedPitchOnly |
Отображать только шрифты с постоянной шириной символов |
|
fdForceFontExist |
Позволять пользователю выбирать шрифты только из списка, запрещать ему вводить другие имена |
|
fdLimitSize |
Разрешить использовать свойства MaxFontSizeиMinFontSize, ограничивающие размеры шрифта |
|
fdNoFaceSel |
Открывать диалоговое окно без предварительно установленного имени шрифта |
|
fdNoOEMFonts |
Удалять из списка шрифтов шрифты OEM |
|
fdScalableOnly |
Отображать только масштабируемые шрифты, удалять из списка не масштабируемые (шрифты bitmap) |
|
fdNoSimulations |
Отображать только шрифты и их начертания, напрямую поддерживаемые файлами, не отображая шрифты, в которых жирный стиль и курсив синтезируется |
|
fdNoSizeSel |
Открывать диалоговое окно без предварительно установленного размера шрифта |
|
fdNoStyleSel |
Открывать диалоговое окно без предварительно установленного начертания шрифта |
|
fdNoVectorFonts |
Удалять из списка векторные шрифты (типа Roman или Script для Windows 1.0) |
|
fdShowHelp |
Отображать в диалоговом окне кнопку Справка |
|
fdTrueTypeOnly |
Предлагать в списке только шрифты TrueType |
|
fdWysiwyg |
Предлагать в списке только шрифты, доступные и для экрана, и для принтера, удаляя из него аппаратно зависимые шрифты |
По умолчанию все эти опции, кроме fdEffects, отключены.
Если установить опцию fdApplyButton, то при нажатии пользователем кнопки Применить возникает событие OnApply, в обработчике которого вы можете написать код, который применит выбранные пользователем атрибуты, не закрывая диалогового окна.
Приведем примеры применения компонента FontDialog. Пусть ваше приложение включает окно редактирования Memo1, шрифт в котором пользователь может выбирать командой меню Шрифт. Вы ввели в приложение компонентFontDialog, имя которого по умолчаниюFontDialog1. Тогда обработчик команды Шрифт может иметь вид:
ifFontDialog1.Executethen
Memo1.Font.Assign(FontDialog1.Font);
Приведенный оператор вызывает диалог выбора атрибутов шрифта и, если пользователь произвел выбор, то значения всех выбранных атрибутов, содержащиеся в свойстве FontDialog1.Font, присваиваются атрибутам окна редактирования, содержащимся в свойствеMemo1.Font. Шрифт в окне редактирования немедленно изменится.
Если вы установите в компоненте FontDialog1опциюfdApplyButton, то можете написать обработчик событияOnApply:
Memo1.Font.Assign(FontDialog1.Font);
Тогда пользователь может наблюдать изменения в окне Memo1, нажимая в диалоговом окне кнопку Применить и не прерывая диалога. Это очень удобно, так как позволяет пользователю правильно подобрать атрибуты шрифта.
