Тестовое приложение свойств шрифта
Разместите на форме многострочное окно редактирования Memo (см. ), в который поместите какой-нибудь текст, например, тест латинских и русских символов, показанный на Рисунок 3.1. Перенесите на форму выпадающий список ComboBox (см. ), в который будут загружаться имена шрифтов, доступных системе на данном компьютере. Назовите этот компонент CBName. Разместите еще один компонент ComboBox, который будет содержать возможные значения свойства Pitch. Назовите его CBPitch и занесите в его свойство Items строки «fpDefault», «fpFixed» и «fpVariable». Разместите на форме также компонент SpinEdit (см. ), в котором можно будет задавать численные значения свойства Charset, и кнопку Button (см. ), нажатие которой будет передавать значение, введенное пользователем в SpinEdit, в свойство шрифта Charset. Разместите на форме компонент главного меню MainMenu (см. ) и введите в меню один раздел — Шрифт, при выборе которого пользователь сможет в диалоге выбирать атрибуты шрифта, в частности, его размеры и стиль. Чтобы обеспечить диалог выбора шрифта разместите на форме также компонент FontDialog (см. ).
Расположение всех компонентов может примерно соответствовать приведенному на Рисунок 3.1. Далее надо написать обработчики событий: события OnCreate при созданий формы (FormCreate), выбора раздела меню (MFontClick), изменений в списке CBName (CBNameClick) и в списке CBPitch (CBPitchChange) и щелчка на кнопке Button1 (Button1Click). Ниже приведен текст всех этих обработчиков. procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin // Загрузка в CBName всех шрифтов системы for i := 0 to Screen.Fonts.Count - 1 do CBName.Items.Add(Screen.Fonts[i]); CBName.ItemIndex := 0; CBPitch.ItemIndex := 0; // Загрузка в Memo1 имени первого шрифта Memo1.Font.Name := CBName.Items[CBName.ItemIndex]; end; procedure TForm1.MFontClick(Sender: TObject); begin // Задание диалогу текущих атрибутов шрифта Memo1 FontDialog1.Font.Assign(Memo1.Font); if (FontDialog1.Execute) then begin // Задание атрибутов шрифта, выбранных в диалоге пользователем Memo1.Font.Assign(FontDialog1.Font); CBName.Text:=Memo1.Font.Name; SpinEdit1.Value:=FontDialog1.Font.CharSet; end end; procedure TForm1.CBNameChange(Sender: TObject); begin // Изменение свойства Name Memo1.Font.Name := CBName.Items[CBName.ItemIndex]; end; procedure TForm1.CBPitchChange(Sender: TObject); begin // Изменение свойства Pitch case CBPitch.ItemIndex of 0: Memo1.Font.Pitch := fpDefault; 1: Memo1.Font.Pitch := fpFixed; 2: Memo1.Font.Pitch := fpVariable; end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Изменение свойства CharSet Memo1.Font.CharSet := SpinEdit1.Value; end;
Комментарии в тексте поясняют отдельные операции. Запустите приложение и исследуйте шрифты, зарегистрированные в системе, и влияние на них свойств Pitch и Charset.