Мы подошли к самому главному — отображению значений диаграммы. Из-
вестно, что диаграмма может содержать не одну последовательность значе-
ний. Каждая такая последовательность представляет собой ряд, состоящий
из точек.
Точка отражает одно значение из последовательности значений определен-
ного ряда. Точки одного ряда могут быть соединены между собой линиями
или представлять собой отдельные плоские или объемные фигуры, это зави-
сит от выбора типа диаграммы. В любом случае точки имеют между собой
логическую связь и образуют ряды значений. Таким образом, при програм-
мировании значений диаграммы мы имеем дело как минимум с двумя ти-
пами объектов: это объекты, объединенные в коллекцию рядов
SeriesCollection, и объекты, объединенные в коллекцию точек Points. Кол-
лекция точек принадлежит ряду.
Как и любая коллекция, коллекция SeriesCollection обладает свойствами,
позволяющими определить количество элементов этой коллекции, и мето-
дами, обеспечивающими доступ к любому объекту этой коллекции. Метод
Item(i) коллекции SeriesCollection возвращает доступ к элементу Series кол-
лекции. Получив доступ к элементу коллекции, т. е. к ряду диаграммы, мы
имеем возможность настроить его внешний вид. Для этого, как и для анало-
гичных объемных или плоских элементов, используем объекты Border,
Interior и Fill, связанные с параметрами границ и внутренней области объ-
ектов, отображающих точки ряда диаграммы.
Доступ к ряду и его свойствам
var i:integer;
Series:=SeriesCollection(i) ;
Border:=Series.Border;
Interior:=Series.Interior;
Fill:=Series.Fill;
Используя эти свойства, мы можем изменить параметры линии границы
элементов, а также их заливку (рис. 14.15).
Рис. 14.15. Настройка элементов диаграммы
Подписи данных для точек ряда диаграммы также представляют собой гео-
метрические фигуры, содержащие текст. Доступ к ним обеспечивается по-
средством объекта DataLabels, который принадлежит объекту Series из кол-
лекции SeriesCollection. Их внешний вид определяется свойствами линии и
заливки, а также свойствами текста. Свойства текста определяются его ти-
пом, шрифтом, способом выравнивания в рамках прямоугольной области
объекта DataLabels, форматом отображения значений и углом поворота (на-
правлением).
Настройка свойств Подписей данных для точек ряда Диаграммы
DataLabels:variant;
// Выбор типа подписи
procedure T0KBottomDlg8.LabelsTypeChange(Sender: TObject);
begin
case LabelsType.Itemlndex of
0: XlDataLabelsType:=xlDataLabelsShowNone;
1: XlDataLabelsType:=xlDataLabelsShowValue;
2: XlDataLabelsType:=xlDataLabelsShowPercent;
3: XlDataLabelsType:=xlDataLabelsShowLabel;
4: XlDataLabelsType:=xlDataLabelsShowLabelAndPercent;
end;
Series.ApplyDataLabels(Type:=XlDataLabelsType);
end;
// Выбор числового формата для отображения значений
procedure TOKBottomDlg8.sNumberFormatChange(Sender: TObject);
begin
DataLabels:=Series.DataLabels;
DataLabels.NumberFormat:=sNumberFormat.Text;
end;
// Горизонтальное выравнивание текста
procedure TOKBottomDlg8.sHorizontalAlignmentChange(Sender: TObject);
begin
case sHorizontalAlignment.Itemlndex of
0: DataLabels.HorizontalAlignment:=xlHAlignCenter;
1: DataLabels.HorizontalAlignment:=xlHAlignLeft;
2: DataLabels.HorizontalAlignment:=xlHAlignRight;
end;
end;
// Вертикальное выравнивание текста
procedure TOKBottomDlg8.sVerticalAlignmentChange(Sender: TObject);
begin
case sHorizontalAlignment.Itemlndex of
0: DataLabels.VerticalAlignment:=xlVAlignBottom;
1: DataLabels.VerticalAlignment:=xlVAlignCenter ;
2: DataLabels.VerticalAlignment:=xlVAlignTop;
end;
end;
// Угол (направление) текста
procedure TOKBottomDlg8.sOrientationChange(Sender: TObject);
begin
DataLabels.Orientation:=sOrientation.Value;
end;
Настраивая эти свойства, можно существенно изменить внешний вид диа-
граммы, а возможность сочетать варианты выбора позволяет представить
информацию пользователю наиболее наглядно (рис. 14.16).
Рис. 14.16. Настройка подписей ряда диаграммы
Интересные возможности предоставляет применение формата, задаваемого
строкой символов и позволяющего задать необходимый вид для числового
значения. Для задания формата чисел можно использовать символы 0, #, ?,
$ и т. д. (их список ограничивается только вашей фантазией и требования-
ми пользователей). Формат чисел, показанных на рис. 14.16, задан следую-
щим оператором:
DataLabels.NumberFormat:='$000,00';
В рамках выбранного типа диаграммы объект Series дает возможность изме-
нять фигуру для точек ряда. Это осуществляется записью определенной
константы в свойство BarShape объекта Series. Следующая процедура позво-
ляет это сделать.
Изменение вида фигуры для точек ряда диаграммы
procedure TOKBottomDlg8.sBarShapeChange(Sender: TObject);
const xlPyramidToPoint=l;
begin
Series.BarShape:= xlPyramidToPoint;
end;
В данном случае мы устанавливаем отображение точки ряда в виде пирами-
ды (рис. 14.17).
Если внимательно рассмотреть диаграммы на рис. 14.16 и 14.17, то мы об-
наружим отклонение стиля второй точки от остальных точек этого ряда. Это
достигается путем изменения свойств выбранной точки данного ряда. Точки
ряда диаграммы объединены в коллекцию Points, свойства и методы кото-
рой обеспечивают доступ к любой точке ряда. Свойство Count этой коллек-
ции содержит количество элементов коллекции, а метод Item(i:integer) воз-
вращает ссылку на элемент коллекции. Чтобы не повторяться, достаточно
отметить, что свойства объекта Point в большей степени идентичны свойст-
вам объекта Series. Программирование свойств этого объекта более детально
представлено в исходном тексте приложения на сопроводительном компакт-
диске книги.
Рассмотрим еще одно свойство объекта Series, являющееся альтернативой
задания области исходных данных для построения диаграммы. Это свойство
имеет строковый тип и содержит формулу, по которой строится ряд диа-
граммы. Свойство Formula принадлежит непосредственно объекту Series.
Следующая процедура иллюстрирует его использование для получения вы-
ражения формулы (рис. 14.18).
Получение строки, содержащей формулу для заданного ряда
procedure TOKBottomDlg8.Buttonl6Click(Sender: TObject);
var eee_:string;
begin
eee_:=Series.Formula;
MessageBox(handle,pchar(eee_) , ' ' , 0 ) ;
end;
Рис. 14.17. Изменение вида фигуры для выбранного ряда
Рис. 14.18. Формула для построения ряда
Используя формулы для объекта Series, можно изменить область исходных
данных для построения ряда.
Следующий оператор изменяет границы области исходных данных построе-
ния для выбранного ряда диаграммы:
Series.FormulaLocal = '=SERIES(,,Лист1!R5C1:R5C7,2)';
|