Компонент FontDialog вызывает диалоговое окно выбора атрибутов шрифта, представленное на рис. 8.8. В нем пользователь может выбрать имя шрифта, его стиль (начертание), размер и другие атрибуты.
Рис. 8.8 Диалоговое окно выбора атрибутов шрифта |
Основное свойство компонента — Font типа TFont (см. раздел 3.1), в котором вы можете задать при желании начальные установки атрибутов шрифта и в котором вы можете прочесть значения атрибутов, выбранные пользователем в процессе диалога.
Свойства MaxFontSize и MinFontSize устанавливают ограничения на максимальный и минимальный размеры шрифта. Если значения этих свойств равны 0 (по умолчанию), то никакие ограничения на размер не накладываются. Если же значения свойств заданы (обычно это целесообразно делать исходя из размеров компонента приложения, для которого выбирается шрифт), то в списке Размер
диалогового окна (см. рис. 8.8) появляются только размеры, укладывающиеся в заданный диапазон. При попытке пользователя задать недопустимый размер ему будет выдано предупреждение вида «Размер должен лежать в интервале ...» и выбор пользователя отменится. Свойства 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 без ссылки на компонент подразумевает шрифт формы.