Диалог выбора шрифта – компонент FontDialog
Перенесите на форму компонент FontDialog.
Двойной щелчок на компоненте FontDialogвызывает диалоговое окно выбора атрибутов шрифта, в котором пользователь может выбрать имя шрифта, его стиль (начертание), размер и другие атрибуты.
Основное свойство компонента – Fontтипа TFont, в котором можно задать начальные установки атрибутов шрифта и в котором можно прочесть значения атрибутов, выбранные пользователем в процессе диалога.
Свойства MaxFontSizeиMinFontSize устанавливают ограничения на максимальный и минимальный размеры шрифта. Значения по умолчанию равны нулю, и тогда ограничения на размер отсутствуют.
Свойство Device определяет, из какого списка возможных шрифтов будет предложен выбор в диалоговом окне: fdScreen –из списка экрана (по умолчанию),fdPrinter –из списка принтера,fdBoth –из обоих.
Свойство Options содержит множество опций, из которого выделим следующие:
fdAnsiOnly | Отображать только множество шрифтов символов Windows, не отображать шрифтов со специальными символами |
fdApplyButton | Отображать в диалоге кнопку Применить независимо от того, предусмотрен ли обработчик события OnApply |
fdEffects | Отображать в диалоге индикаторы специальных эффектов (подчеркивание и др.) и список Цвет |
fdFixedPitchOnly | Отображать только шрифты с постоянной шириной сим-волов |
fdForceFontExist | Позволять пользователю выбирать шрифты только из списка, запрещать ему вводить другие имена |
fdLimitSize | Разрешить использовать свойства MaxFontSizeиMin-FontSize, ограничивающие размеры шрифта |
fdNoFaceSel | Открывать диалоговое окно без предварительно установ-ленного имени шрифта |
fdScalableOnly | Отображать только масштабируемые шрифты, удалять из списка не масштабируемые (шрифты bitmap) |
fdNoSizeSel | Открывать диалоговое окно без предварительно установ-ленного размера щрифта |
fdNoStyleSel | Открывать диалоговое окно без предварительно установ-ленного начертания шрифта |
fdWysiwyg | Предлагать в списке только шрифты, доступные и для эк-рана, и для принтера, удаляя из него аппаратно зависимые шрифты |
По умолчанию все опции, кроме fdEffects, отключены.
Если установить опцию fdApplyButton, то при нажатии пользователем кнопки Применить возникает событие OnApply, в обработчике которого можно написать код, который применит выбранные пользователем атрибуты, не закрывая диалогового окна.
Рассмотрим примеры применения компонента FontDialog.
1.Начните новое приложение. На форме с надписью ДИАЛОГ FONTDIALOG разместите компоненты MainMenu1, Memo1, RichEdit1, FontDialog1, FontDialog2, FontDialog3.
2.Сконструируйте меню с командами Шрифт_M, Шрифт_R, Шрифт_F.
3.В обработчик команды Шрифт_M впишите
if(FontDialog1->Execute())
Memo1->Font->Assign(FontDialog1->Font);
Приведенный оператор вызывает диалог выбора атрибутов шрифта и, если пользователь произвел выбор, значения всех выбранных атрибутов, содержащиеся в свойстве FontDialog1->Font, присваиваются атрибутам окна редактирования, содержащимся в свойстве Memo1->Font. Шрифт в окне Memo1 немедленно изменится. Убедитесь в этом, запустив приложение на выполнение.
4.В компоненте FontDialog1 установим опцию fdApplyButton в true и напишем обработчик события OnApply:
Memo1->Font->Assign(FontDialog1->Font);
Выполним приложение. Теперь пользователь может наблюдать изменения в окне Memo1, нажимая в диалоговом окне кнопку Применить и не прерывая диалога. Это очень удобно, так как позволяет пользователю правильно подобрать атрибуты шрифта.
5.Используем в качестве окна редактирования RichEdit1. Теперь в диалоговом окне пользователь выбирает атрибуты шрифта для выделенного фрагмента текста или для вновь вводимого текста. Эта возможность реализуется следующим обработчиком команды Шрифт_R:
if(FontDialog2->Execute())
RichEdit1->SelAttributes->Assign(FontDialog2->Font);
Сохраните все и выполните приложение.
6.Можно разрешить пользователю изменять шрифт не только отдельных компонентов, но и всех компонентов и надписей на форме. Это осуществляется следующим обработчиком команды Шрифт_F:
if(FontDialog3->Execute())
Font->Assign(FontDialog3->Font);
В этом операторе свойство Font без ссылки на компонент подразумевает шрифт формы.
Запустите приложение на выполнение и убедитесь в работоспособности приложения.