Диалог выбора шрифта — компонент FontDialog
Компонент FontDialog вызывает диалоговое окно выбора атрибутов шрифта. В нем пользователь может выбрать имя шрифта, его стиль (начертание), размер и другие атрибуты.
Свойства MaxFontSize и MinFontSize устанавливают ограничения на максимальный и минимальный размеры шрифта. Если значения этих свойств равны 0 (по умолчанию), то никакие ограничения на размер не накладываются. Если же значения свойств заданы (обычно это целесообразно делать исходя из размеров компонента приложения, для которого выбирается шрифт), то в списке Размер диалогового окна появляются только размеры, укладывающиеся в заданный диапазон. При попытке пользователя задать недопустимый размер ему будет выдано предупреждение вида «Размер должен лежать в интервале ...» и выбор пользователя отменится. Свойства MaxFontSize и MinFontSize действуют только при включенной опции fdLimitSize (см. ниже).
Свойство 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. Тогда обработчик команды Шрифт может иметь вид:
if FontDialog1.Execute then Memo1.Font.Assign(FontDialog1.Font);
|
Приведенный оператор вызывает диалог выбора атрибутов шрифта и, если пользователь произвел выбор, то значения всех выбранных атрибутов, содержащиеся в свойстве FontDialog1.Font, присваиваются атрибутам окна редактирования, содержащимся в свойстве Memo1.Font. Шрифт в окне редактирования немедленно изменится.
Если вы установите в компоненте FontDialog1 опцию fdApplyButton, то можете написать обработчик события OnApply:
Memo1.Font.Assign(FontDialog1.Font);
|
Тогда пользователь может наблюдать изменения в окне Memo1, нажимая в диалоговом окне кнопку Применить и не прерывая диалога. Это очень удобно, так как позволяет пользователю правильно подобрать атрибуты шрифта.
Если в качестве окна редактирования в вашем приложении вы используете RichEdit, то можете предоставить пользователю выбирать атрибуты шрифта для выделенного фрагмента текста или для вновь вводимого текста. Тогда выполнение команды меню Шрифт может осуществляться операторами:
if FontDialog1.Execute then RichEdit1.SelAttributes.Assign(FontDialog1.Font);
|
Вы можете разрешить пользователю изменять шрифт не только отдельных компонентов, но и всех компонентов и надписей на форме. Это осуществляется оператором:
if FontDialog1.Execute then
Font.Assign(FontDialog1.Font);
|
В этом операторе свойство Font без ссылки на компонент подразумевает шрифт формы.