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

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

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

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

Name Fonts
Caption Символы

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

Align alTop
Caption Отрезки

Рис. 6.1.1.

Разместите на компоненте Panel 1 компонент Combo Box (рис. 6.1.1.)- Пусть имя этого компонента будет FontListCB. Далее расположите на форме компонент DrawGrid:

Name FontDG
Align alClient
RowCount  
ColCount  
FixedCols  
FixedRows  
DafaultColWidth  
DafaultRowHeight  

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

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 d o

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;

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: