Суперфункции

EXCEL. Часть 4

Если информация в виде таблиц не воспринимается так, как хотелось бы, то представьте ее в виде графика или диаграммы. Графическое отображение информации усиливает ее восприятие. В Excel есть возможность программировать отображение информации в виде диаграмм и графиков, и вы можете воспользоваться этим, чтобы сделать свою программу более информативной и конкурентно-способной.

Для создания и работы с диаграммами в Excel используется коллекция Charts объекта Application. Через эту коллекцию мы можем получить полный доступ ко всем диаграммам и их свойствам. Перед тем, как создавать диаграмму, рассмотрим ее внешний вид и свойства (см. рис.).

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

 


Создание диаграммы

Для создания диаграммы используем метод Add коллекции Charts. Процедура AddChart (для Delphi) создает диаграмму, устанавливает ее вид и возвращает ее имя для доступа к этой диаграмме в дальнейшем. В качестве второго аргумента функции можно использовать константу xl3Darea(-4098), которая позволяет создать объемную диаграмму. Значения других констант, которые соответствуют другим видам диаграмм, и исходный текст смотрите на www.kornjakov.ru/st2_5.zip.

Function AddChart(var name:string;
  ChartType:integer):boolean;
begin
 AddChart:=true;
 try
  name:=E.Charts.Add.Name;
  E.Charts.Item[name].ChartType:=ChartType;
 except
  AddChart:=false;
 end;
End;


Область данных диаграммы

Данные для построения диаграммы должны быть расположены на любом листе рабочей книги и представлять собой прямоугольную область. Для определения рабочей области данных используется метод SetSourceData, первый аргумент которого - ссылка на лист и область ячеек, второй - определяет способ использования данных (по строкам/столбцам).

Function SetSourceData(Name,Sheet:variant;
  Range:string;XlRowCol:integer):boolean;
begin
 SetSourceData:=true;
 try
  E.ActiveWorkbook.Charts.Item[name].SetSourceData
   (Source:=E.ActiveWorkbook.Sheets.Item [Sheet].Range[Range],PlotBy:=XlRowCol);
 except
  SetSourceData:=false;
 end;
End;


Область диаграммы

Если диаграмма расположена на одном листе с данными, то можно изменять координаты и размеры области диаграммы. Диаграмма может быть размещена также на отдельном листе, тогда ее размеры совпадают с размером листа. Для доступа к координатам и размерам этой области используем объект ChartArea (область диаграммы). Функция PositionChart изменяет ее координаты и размеры. Аналогично мы можем получить координаты и размеры диаграммы. Для этого достаточно считать значения Left, Top, Width и Height объекта ChartArea.

Function PositionChart(Name:variant;
  Left,Top,Width,Height:real):boolean;
begin
 PositionChart:=true;
 try
  E.Charts.Item[name].ChartArea.Left:=Left;
  E.Charts.Item[name].ChartArea.Top:=Top;
  E.Charts.Item[name].ChartArea.Width:=Width;
  E.Charts.Item[name].ChartArea.Height:=Height;
 except
  PositionChart:=false;
 end;
End;

Кроме размеров и координат, область диаграммы имеет свойства, которые определяют стиль, цвет, толщину рамки окаймления, а также рисунок и цвет самой области. Свойства рамки содержатся в объекте Border области ChartArea. Цвет рамки может быть представлен как комбинация из трех цветов RGB или выбран из палитры. Толщина и стиль выбираются из конечного, определенного списка значений (смотрите исходный текст). Используем функцию BorderChartArea для установки типа и цвета рамки из приложений Delphi.

Function BorderChartArea(Name:variant;
  Color,LineStyle,Weight:integer):boolean;
begin
 BorderChartArea:=true;
 try
  E.Charts.Item[name].ChartArea.Border.Color:=Color;
  E.Charts.Item[name].ChartArea.Border.Weight:=Weight;
  E.Charts.Item[name].ChartArea.Border.LineStyle:=LineStyle;
 except
  BorderChartArea:=false;
 end;
End;

Свойства области диаграммы содержатся в объекте Interior. Цвет области и рисунка заполнения может быть представлен как комбинация из трех цветов RGB или выбран из палитры. Вид рисунка заполнения выбирается из конечного, определенного списка значений (смотрите исходный текст). Функция BrushChartArea устанавливает цветовые параметры области диаграммы.

Function BrushChartArea(Name:variant;
  Color,Pattern,PatternColor:integer):boolean;
begin
 BrushChartArea:=true;
 try
  E.Charts.Item[name].ChartArea.Interior.Color:=Color;
  E.Charts.Item[name].ChartArea.Interior.Pattern:=Pattern;
  E.Charts.Item[name].ChartArea.Interior.PatternColor:=PatternColor;
 except
  BrushChartArea:=false;
 end;
End;

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

Function BrushChartAreaFromFile(Name:variant;File_:string):boolean;
begin
 BrushChartAreaFromFile:=true;
 try
  E.Charts.Item[name].ChartArea.Fill.UserPicture(PictureFile:=File_);
  E.Charts.Item[name].ChartArea.Fill.Visible:=True;
 except
  BrushChartAreaFromFile:=false;
 end;
End;

Область диаграммы - это область, которая содержит все остальные объекты диаграммы. Рассмотрим остальные компоненты, расположенные на этой области.


Область построения диаграммы

Область построения диаграммы служит для размещения графического изображения. Она имеет координаты относительно области диаграммы и другие свойства, присущие области: цвет и стиль рамки, цвет заливки и фоновый рисунок. Для доступа к ее координатам и размерам используем объект PlotArea (область построения диаграммы), который содержит все свойства области. Функция PositionPlotArea изменяет ее координаты и размеры.

Function PositionPlotArea(Name:variant;
  Left,Top,Width,Height:real):boolean;
begin
 PositionPlotArea:=true;
 try
  E.Charts.Item[name].PlotArea.Left:=Left;
  E.Charts.Item[name].PlotArea.Top:=Top;
  E.Charts.Item[name].PlotArea.Width:=Width;
  E.Charts.Item[name].PlotArea.Height:=Height;
 except
  PositionPlotArea:=false;
 end;
End;

Другими важными свойствами области диаграммы являются свойства, определяющие стиль, цвет, толщину рамки окаймления и рисунок, цвет самой области. Свойства рамки содержатся в объекте Border области PlotArea. Цвет рамки может быть представлен как комбинация из трех цветов RGB или выбран из палитры. Толщина и стиль выбираются из конечного, определенного списка значений (смотрите исходный текст).

Function BorderPlotArea(Name:variant;
  Color,LineStyle,Weight:integer):boolean;
begin
 BorderPlotArea:=true;
 try
  E.Charts.Item[name].PlotArea.Border.Color:=Color;
  E.Charts.Item[name].PlotArea.Border.Weight:=Weight;
  E.Charts.Item[name].PlotArea.Border.LineStyle:=LineStyle;
 except
  BorderPlotArea:=false;
 end;
End;

Цветовая характеристика области построения диаграммы содержится в объекте Interior. Цвет области и рисунка заполнения может быть представлен как комбинация из трех цветов RGB или выбран из палитры. Вид рисунка заполнения выбирается из конечного, определенного списка значений (смотрите исходный текст). Функция BrushPlotArea устанавливает цветовые параметры области диаграммы.

Function BrushPlotArea(Name:variant;
  Color,Pattern,PatternColor:integer):boolean;
begin
 BrushPlotArea:=true;
 try
  E.Charts.Item[name].PlotArea.Interior.Color:=Color;
  E.Charts.Item[name].PlotArea.Interior.Pattern:=Pattern;
  E.Charts.Item[name].PlotArea.Interior.PatternColor:=PatternColor;
 except
  BrushPlotArea:=false;
 end;
End;

Фон области построения диаграммы может быть представлен не только в виде определенного узора и цветовой комбинации, но и в виде рисунка, загруженного из графического файла. Для этого используется метод UserPicture объекта Fill области PlotArea.

Function BrushPlotAreaFromFile(Name:variant;File_:string):boolean;
begin
 BrushPlotAreaFromFile:=true;
 try
  E.Charts.Item[name].PlotArea.Fill.UserPicture(PictureFile:= File_);
  E.Charts.Item[name].PlotArea.Fill.Visible:=True;
 except
  BrushPlotAreaFromFile:=false;
 end;
End;


Заголовок диаграммы

Заголовок диаграммы имеет такие же параметры, как и любая область, но есть некоторые отличия. Ширина и высота заголовка определяется размером шрифта, и, в отличие от области диаграммы, важным параметром является текст надписи заголовка и сам шрифт как объект, входящий в ChartTitle. Полные версии функций для использования в приложениях Delphi смотрите на www.kornjakov.ru/st2_5.zip, здесь представлены только их фрагменты. Рассмотрим основные свойства объекта ChartTitle. Заголовок и текст заголовка выводится при условии, что в поле HasTitle объекта Chart записано значение True, а поле Text объекта ChartTitle записан сам текст. Смотрите пример:

E.Charts.Item[name].HasTitle:=True;
E.Charts.Item[name].ChartTitle.Text:='Заголовок диаграммы';

Координаты заголовка содержатся в полях Left и Top объекта ChartTitle. Для перемещения заголовка запишите в эти поля новые значения координат. Для определения координат считайте значения из этих полей.

E.Charts.Item[name].ChartTitle.Left:=Left;
E.Charts.Item[name].ChartTitle.Top:=Top;

Чтобы изменить визуальные параметры рамки, используйте объект Border и его поля Color (цвет), Weight (толщина) и LineStyle (стиль линии)

E.Charts.Item[name].ChartTitle.Border.Color:=Color;
E.Charts.Item[name].ChartTitle.Border.Weight:=Weight;
E.Charts.Item[name].ChartTitle.Border.LineStyle:=LineStyle;

Для заполнения цветом и узором области заголовка используйте объект Interior и его поля Color (цвет), Pattern (узор) и PatternColor (цвет узора).

E.Charts.Item[name].ChartTitle.Interior.Color:=Color;
E.Charts.Item[name].ChartTitle.Interior.Pattern:=Pattern;
E.Charts.Item[name].ChartTitle.Interior.PatternColor:=PatternColor;

Чтобы заполнить область заголовка рисунком из графического файла, используйте метод UserPicture объекта Fill. Чтобы этот рисунок стал видимым, запишите в поле Visible объекта Fill значение True.

E.Charts.Item[name].ChartTitle.Fill.UserPicture(PictureFile:= File_);
E.Charts.Item[name].ChartTitle.Fill.Visible:=True;

Мы рассмотрели не все свойства диаграммы, в следующей части рассмотрим остальные свойства, а также программирование графической части диаграммы. Полные исходные тексты с примерами смотрите по адресу www.kornjakov.ru/st2_5.zip. По всем вопросам вы можете обратиться к автору по адресу _kvn@mail.ru или www.kornjakov.ru.

Василий КОРНЯКОВ

Литература: Н. Елманова, С. Трепалин, А. Тенцер "Delphi 6 и технология COM" "Питер" 2002.

Версия для печатиВерсия для печати

Номер: 

29 за 2003 год

Рубрика: 

Азбука программирования
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!