100 компонентов общего назначения библиотеки Delphi5


Диалоговое окно выбора атрибутов шрифта


Основное свойство компонента — Font типа TFont (см. ), в котором вы можете задать при желании начальные установки атрибутов шрифта и в котором вы можете прочесть значения атрибутов, выбранные пользователем в процессе диалога.

Свойства 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 без ссылки на компонент подразумевает шрифт формы.

Содержание раздела