Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекций_2 семестр.doc
Скачиваний:
0
Добавлен:
27.12.2019
Размер:
1.4 Mб
Скачать

Программирование диаграмм Excel в Delphi

Диаграмма на рабочем листе Excel представляет собой объект. Как все объекты Excel, она имеет некоторые общие свойства, характеризующие и другие типы объектов (например, размеры и положение), а также свойства, которыми обладают только диаграммы.

Коллекция Charts, размещение диаграммы и исходных данных

Все диаграммы рабочей книги объединены в коллекцию Charts, свойства и методы которой позволяют добавлять новые диаграммы, хранить, удалять и обеспечивать доступ к любой диаграмме коллекции. Коллекция Charts имеет такие же свойства, как любая другая коллекция объектов Excel, но есть и некоторые отличия, обусловленные свойствами диаграммы, т. к. диаграмма может находиться на листе вместе с другими данными или занимать отдельный лист. Поэтому диаграмма и лист рабочей книги, а также коллекции, которым они принадлежат, могут иметь общие свойства и методы, которые придется учитывать при программировании приложений.

Для того чтобы создать новую диаграмму, а затем манипулировать общим списком диаграмм и получать доступ к отдельной диаграмме, достаточно воспользоваться одним свойством и двумя методами коллекции Charts. Свойство Count имеет тип Integer, его значение равно количеству диаграмм в рабочей книге. Метод Add создает новую диаграмму и возвращает ссылку на нее. Метод Item() возвращает ссылку на созданную ранее диаграмму, принадлежащую коллекции Charts. Аргументом метода Item() является порядковый номер (индекс) или имя диаграммы в коллекции. Во втором случае аргументом метода Item является строка, содержащая имя диаграммы.

Индексом может быть целое число со значением в диапазоне от 1 до Charts.Count. Следующие две процедуры демонстрируют, как можно создать диаграмму, получив ссылку на нее, или получить доступ к существующей диаграмме с помощью индекса.

Создание диаграммы и получение доступа к существующей диаграмме

procedure TForml.ButtonlClick(Sender: TObject);

begin

Chart:=E.Charts.Add;

Chart.ChartType:=xl3DColumn;

Chart.SetSourceData(Source:=E.ActiveWorkbook.Sheets.Item[2].

Range['Al:F5'],PlotBy:=xlColumns);

end;

procedure TForml.ButtonlClick(Sender: TObject);

begin

Chart:=E.Charts.Item[1];

end;

Первая процедура состоит из трех операторов: первый создает диаграмму и возвращает ссылку нее, два других, используя полученную ссылку, определяют область значений для построения диаграммы и ее тип. Без этих двух операторов мы получили бы только пустую область диаграммы. Тип диаграммы определяется значением свойства ChartType объекта Chart, имеющим целый тип и выбираемым из нескольких десятков констант. Метод SetSourceData определяет диапазон данных (область ячеек) листа рабочей книги, по которым будет строиться диаграмма. Первый аргумент этого метода определяет адрес области, второй — порядок использования ячеек в заданной области.

Важной характеристикой диаграммы также является место, где расположена сама диаграмма, определяемое с помощью метода Location объекта Chart. У этого метода два аргумента. Первый аргумент (типа Integer) определяет, будет диаграмма находиться на отдельном листе или на обычном листе с данными. Если выбран второй вариант, то второй аргумент метода Location определяет имя листа, на котором будет располагаться диаграмма. В нашем случае диаграмма создана на отдельном листе. С помощью следующих процедур переместим ее на первый лист рабочей книги — туда, где располагаются данные для построения диаграммы, затем переместим обратно на отдельный лист.

Перемещение диаграммы на лист с данными

Const xlLocationAsNewSheet=l; xlLocationAs0bject=2;

procedure TForml.Button2Click(Sender: TObject);

begin Chart.Location(Where:=xlLocationAsObject, Name:='Лист1');

Chart: =E. Act iveChart; end;

procedure TForml.Button3Click(Sender: TObj ect);

begin Chart.Location(Where:=xlLocationAsNewSheet);

Chart:=E.ActiveChart; end;

Обратите внимание на то, что после вызова метода Location необходимо снова получать ссылку на объект ActiveChart, т. к. переменная Chart после переноса диаграммы на новый лист уже не содержит ссылку на диаграмму.

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

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

function SetValueRange(sheet:variant; range:string;:value:variant):boolean;

begin SetValueRange:=True;

try E.ActiveWorkbook.Sheets.Item[sheet].Range[range]:=value;

except SetValueRange:=False; end;

end;

procedure TForml.Button4Click(Sender: TObject);

var a : integer;

begin randomize;

SetValueRange('Лист1','Al’, 'AAAA');

SetValueRange('Лист1','Bl','BBBB');

SetValueRange('Лист!','Cl','CCCC);

for a:=2 to 5 do begin

SetValueRange('Лист1','A1+inttostr(a),a-l);

SetValueRange('Лист1','B'+inttostr(a),random(l000));

SetValueRange('Лист1','C'+inttostr(a),random(l000));

end; end;