Создайте новый проект. Сохраните новое приложение в папке 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;
Эксперимент. Сохраните и запустите проект. Что происходит при изменении шрифта?¨