
- •Delphi. Визуальное программирование – 3 Классы tStringList и tIniFile Динамическое помещение компонентов на форму
- •Динамическое создание компонента типа tTabSet
- •Выбор элемента в ColorPropertyRg
- •Изменение значения в полосе прокрутки
- •Активация кнопкиУстановить(Set)
- •Сохранение текущих цветовых значений вIni-файле
- •Задания для самостоятельного выполнения
- •Класс tDrawGrid
- •Свойства компонента DrawGrid
- •Основные свойства, доступные во время разработки
- •Свойство Options
- •Свойства, доступные во время выполнения программы
- •Методы компонента DrawGrid
- •События компонента DrawGrid
- •Задание. Символы системных шрифтов
- •Класс tStringGrid
- •Новые свойства
- •Задание. Игра «Жизнь»
Задание. Символы системных шрифтов
Создайте приложение, которое позволяет просматривать символы системных шрифтов.
Решение
Создайте новый проект. Сохраните новое приложение в папке 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;
Эксперимент. Сохраните и запустите проект. Что происходит при изменении шрифта?