

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Класс TFont
С помощью класса TFont создается объект-шрифт для любого графического устройства (экрана, принтера, плоттера и т. п.). Наиболее важные свойства класса перечислены в таблице 11.
Таблица 11 – Свойства класса TFont
Свойство |
Описание |
|
|
property Charset: TFontCharSet; |
Набор символов. Для русскоязычных программ это |
|
свойство обычно имеет значение DEFAULT_CHARSET |
|
или RUSSIAN_CHARSET. Используйте значение |
|
OEM_CHARSET для отображения текста MS-DOS |
|
(альтернативная кодировка). |
property Color: TColor; |
Цвет шрифта. |
property Height: Integer; |
Высота шрифта в пикселах экрана. |
property Name: TFontName; |
Имя шрифта. По умолчанию имеет значение MS Sans |
|
Serif. |
property Size: Integer; |
Высота шрифта в пунктах (1/72 дюйма). Изменение |
|
этого свойства автоматически изменяет свойство Height |
|
и наоборот. |
property Style: TFontStyles; Стиль шрифта. Может принимать значение как комбинацию следующих признаков:
−fsBold (жирный);
−fsItalic (курсив);
−fsUnderline (подчеркнутый);
−fsStrikeOut (перечеркнутый).
Для присваивания свойств объекта шрифта необходимо использовать метод procedure Assign(Source: TPersistent);
с помощью которого значения свойств шрифтового объекта Source присваиваются свойствам текущего шрифта.
Рассмотрим небольшой пример на использование различных шрифтов при выводе текста. Создайте новый проект. На форму frmFontDemo поместите следующие компоненты: TPanel (pnCommand) и TFontDialog (FontDialog). Установите значение
свойства Align равным alBottom. Компонент TFontDialog находится на вкладке
Dialogs палитры компонентов. Этот компонент представляет собой стандартный диалог выбора шрифта (рисунок 8).

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 8 – Вид стандартного окна выбора шрифта
Работа с этим компонентом аналогична работе с компонентом TOpenDialog. Выбранный шрифт находится в свойстве Font компонента. Поместите на панель
(pnCommand) следующие компоненты: TButton (btnExit, btnFont, btnEnter), TEdit (edtStr),.
Разместите компоненты на форме как показано на рисунке 9.
Рисунок 9 – Вид формы после размещения и настройки компонентов

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Создайте следующие обработчики событий для формы frmFontDemo: OnPaint, OnResize, OnCreate. Создайте также обработчики для кнопок «Ввод», «Шрифт», «Выход». Текст программы приведен в листинге 6.
Листинг 6 – Программа «Шрифт»
unit UFontDemo;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TfrmFontDemo = class(TForm) pnCommand: TPanel; btnExit: TButton; btnFont: TButton;
edtStr: TEdit; btnEnter: TButton;
FontDialog: TFontDialog;
procedure btnExitClick(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnEnterClick(Sender: TObject); procedure btnFontClick(Sender: TObject);
private
{Private declarations } public
{Public declarations } FHeight:Integer;
procedure Draw; end;
var frmFontDemo: TfrmFontDemo;
implementation
{$R *.dfm}
procedure TfrmFontDemo.btnExitClick(Sender: TObject); begin
Close;
end;
procedure TfrmFontDemo.Draw; var y:integer;
begin y:=10;
//рисуем фон
Canvas.Brush.Color:=clWhite;
Canvas.Brush.Style:=bsSolid; Canvas.FillRect(Rect(0, 0, ClientWidth, FHeight)); //устанавливаем шрифт
Canvas.Font.Size:=8;
Canvas.Font.Style:=[];
//рисуем образцы

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
with Canvas do begin
TextOut(10, 10, edtStr.Text + ' Size=8'); y:=y+TextHeight(edtStr.Text)+10;
Font.Size:=16;
TextOut(10, y, edtStr.Text + ' Size=16'); y:=y+TextHeight(edtStr.Text)+10;
Font.Size:=24;
TextOut(10, y, edtStr.Text + ' Size=24'); y:=y+TextHeight(edtStr.Text)+10;
Font.Style:=[fsBold];
TextOut(10, y, edtStr.Text + ' (Жирный)'); y:=y+TextHeight(edtStr.Text)+10;
Font.Style:=[fsItalic];
TextOut(10, y, edtStr.Text + ' (Курсив)'); y:=y+TextHeight(edtStr.Text)+10;
Font.Style:=[fsUnderline];
TextOut(10, y, edtStr.Text + ' (Подчеркнутый)'); y:=y+TextHeight(edtStr.Text)+10;
Font.Style:=[fsStrikeOut];
TextOut(10, y, edtStr.Text + ' (Зачеркнутый)'); end;
end;
procedure TfrmFontDemo.FormResize(Sender: TObject); begin
FHeight:=ClientHeight - pnCommand.Height -1; Draw;
end;
procedure TfrmFontDemo.FormPaint(Sender: TObject); begin
Draw;
end;
procedure TfrmFontDemo.FormCreate(Sender: TObject); begin
FHeight:=ClientHeight - pnCommand.Height -1;; end;
procedure TfrmFontDemo.btnEnterClick(Sender: TObject); begin
Draw;
end;
procedure TfrmFontDemo.btnFontClick(Sender: TObject); begin
if FontDialog.Execute then begin
Canvas.Font.Assign(FontDialog.Font);
Draw; end;{if}
end;{btnFontClick}