Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Делфи 2-3 / 3. Delphi-3.doc
Скачиваний:
55
Добавлен:
30.03.2015
Размер:
416.26 Кб
Скачать

Задание. Символы системных шрифтов

Создайте приложение, которое позволяет просматривать символы системных шрифтов.

Решение

Создайте новый проект. Сохраните новое приложение в папке Fonts, файл модуля — под именем Main.pas, файл проекта — Fonts.dpr.

1-й этап. Визуальное проектирование

Положите на форму компонент TPanel:

Измените значения свойств формы следующим образом:

Разместите на компоненте Panel1 компонент ComboBox (см. рисунок). Пусть имя этого компонента будет FontListCB. Далее расположите на форме компонент DrawGrid (вкладка Additional):

Name

FontDG

Align

alClient

RowCount

7

ColCount

32

FixedCols

0

FixedRows

0

DafaultColWidth

20

DefaultRowHeight

20

Измените размеры формы так, чтобы сетка не имела полос прокрутки, а вокруг ячеек не было пустого пространства.

2-й этап. Разработка программного кода

Для того чтобы содержимое каждой ячейки перерисовывалось, создадим обработчик события OnDrawCell для компонента FontDG. Для изображения символов шрифта воспользуемся свойством Canvas компонента FontDG. Непосредственно нам понадобится метод TextRect свойства Canvas. Этот метод используется для вывода текстовой информации в определенной ячейке. Обработчик события будет выглядеть так:

procedure TFonts.FontDGDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

begin

with FontDG.Canvas do

TextRect (Rect, Rect.Left, Rect.Top,Char((ARow+1)*32+ACol)) ;

{параметры ячейки для вывода символов шрифта берутся из параметров обработчика события, а символ шрифта для отображения в ячейке определяется в зависимости от строки и столбца}

end;

Эксперимент. Сохраните проект. Убедитесь, что в ячейках таблицы отображаются символы системного шрифта, установленного по умолчанию.

Выбор шрифта

Для выбора шрифта воспользуемся компонентом FontListCB. Для того чтобы данный компонент содержал все экранные шрифты, надо при создании формы занести их в список.

Названия всех экранных шрифтов можно узнать с помощью глобальной переменной Screen типа TScreen. Данная переменная автоматически добавляется во все приложения Delphi. Переменная Screen содержит информацию о текущем состоянии экрана приложения: названия форм и модулей данных, которые используются приложением; данные об активной форме и компонентах, используемых этой формой; размер и разрешение используемого экрана; информацию о доступных приложению курсорах и шрифтах.

Информация о доступных приложению шрифтах содержится в свойстве Font, принадлежащем переменной Screen.

Создадим следующий обработчик:

procedure TFonts.FormCreate(Sender: TObject);

begin

with FontListCB do begin

Items := Screen.Fonts ;

{в свойстве Fonts переменной Screen содержатся

названия всех экранных шрифтов}

Itemlndex :=Items.IndexOf(Font.Name);

{свойства IndexOf содержит номер строки в списке FontListCB, которая выбрана, и, соответственно, содержит имя текущего шрифта}

end;

end;

Эксперимент. Сохраните и запустите проект. Компонент FontDG содержит символы шрифта, установленного в FontListCB. Сколько шрифтов установлено на компьютере? Что происходит при выборе другого шрифта?

Для того чтобы связать значение имени шрифта у FontDG и FontListCB, создадим еще один обработчик события:

procedure TFonts.FontListCBClick (Sender: TObject);

begin

FontDG.Font.Name := FontListCB.Text;

end;

Эксперимент. Сохраните и запустите проект. Что происходит при изменении шрифта?