Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РАБ_C++BUILDER.doc
Скачиваний:
100
Добавлен:
02.06.2015
Размер:
7.07 Mб
Скачать

Диалог выбора шрифта – компонент 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 немедленно изменится. Убедитесь в этом, запустив приложение на выполнение.

  1. В компоненте FontDialog1 установим опцию fdApplyButton в true и напишем обработчик события OnApply:

Memo1->Font->Assign(FontDialog1->Font);

Выполним приложение. Теперь пользователь может наблюдать изменения в окне Memo1, нажимая в диалоговом окне кнопку Применить и не прерывая диалога. Это очень удобно, так как позволяет пользователю правильно подобрать атрибуты шрифта.

  1. Используем в качестве окна редактирования RichEdit1. Теперь в диалоговом окне пользователь выбирает атрибуты шрифта для выделенного фрагмента текста или для вновь вводимого текста. Эта возможность реализуется следующим обработчиком команды Шрифт_R:

if(FontDialog2->Execute())

RichEdit1->SelAttributes->Assign(FontDialog2->Font);

Сохраните все и выполните приложение.

  1. Можно разрешить пользователю изменять шрифт не только отдельных компонентов, но и всех компонентов и надписей на форме. Это осуществляется следующим обработчиком команды Шрифт_F:

if(FontDialog3->Execute())

Font->Assign(FontDialog3->Font);

В этом операторе свойство Font без ссылки на компонент подразумевает шрифт формы.

Запустите приложение на выполнение и убедитесь в работоспособности приложения.