Компонент TFontDialog вызывает стандартный диалог Windows для выбора шрифта.
Отрытие диалога осуществляется методом Execute. Если в диалоге пользователь нажмет кнопку Открыть (Сохранить), диалог закрывается, метод Execute возвращает true и выбранные атрибуты шрифта передаются в свойство Font компонента-диалога. Если же пользователь отказался от диалога (нажал кнопку Отмена или клавишу Esc), то метод Execute возвращает false.
Значение свойства Font можно задать и перед обращением к диалогу. Тогда оно определит значения атрибутов шрифта по умолчанию, которые увидит пользователь в момент открытия диалога. Таким образом, например, выполнение команды Шрифт, по которой пользователь может задать текущее значение шрифта для компонента RichEdit1, может иметь вид:
// Задание в качестве атрибутов по умолчанию
// атрибутов шрифта текущей позиции курсора в тексте
FontDialog1.Font.Assign(RichEdit1.SelAttributes);
// Открытие диалога
if(FontDialog1.Execute) then
RichEdit1.SelAttributes.Assign(FontDialog1.Font);
Свойства MaxFontSize и MinFontSize устанавливают ограничения на максимальный и минимальный размеры шрифта. Если значения этих свойств равны 0 (по умолчанию), то никакие ограничения на размер не накладываются. Если же значения свойств заданы (обычно это целесообразно делать исходя из размеров компонента приложения, для которого выбирается шрифт), то в списке Размер диалогового окна (см. приведенный рисунок) появляются только размеры, укладывающиеся в заданный диапазон. При попытке пользователя задать недопустимый размер ему будет выдано предупреждение вида "Размер должен лежать в интервале ..." и выбор пользователя отменится. Свойства MaxFontSize и MinFontSize действуют только при включенной опции fdLimitSize.
Свойство Device определяет, из какого списка возможных шрифтов будет предложен выбор в диалоговом окне: fdScreen - из списка экрана (по умолчанию), fdPrinter - из списка принтера, fdBoth - из обоих.
Свойство Options содержит множество опций диалога. По умолчанию все эти опции, кроме fdEffects, отключены.
Если установить опцию fdApplyButton, то при нажатии пользователем кнопки Применить возникает событие OnApply, в обработчике которого вы можете написать код, который применит выбранные пользователем атрибуты, не закрывая диалогового окна. Например:
RichEdit1.SelAttributes.Assign(FontDialog1.Font);
Тогда пользователь может наблюдать изменения в окне RichEdit1, нажимая в диалоговом окне кнопку Применить и не прерывая диалога. Это очень удобно, так как позволяет пользователю правильно подобрать атрибуты шрифта.
При работе с окном редактирования Memo аналогичный оператор может иметь вид:
Memo1.Font.Assign(FontDialog1.Font);