На этом шаге мы рассмотрим изменение типа диаграммы.
Обычно тип диаграммы задается сразу после ее создания, но в процессе работы приложения иногда требуется изменить внешний вид диаграммы. Для этого используем свойство ChartType объекта Chart, позволяющее изменять тип диаграммы путем записи в него значения константы из заданного списка возможных значений.
Следующая процедура демонстрирует способ применения свойства ChartType. На рисунке 1 показан один из возможных типов диаграмм.
procedure TForm1.ComboBox1Change(Sender: TObject); //Изменение типа диаграммы begin Chart.ChartType:=ComboBox1.ItemIndex+51; end;
Рис.1. Результат изменения типа диаграммы
Приведем полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, Spin, ExtDlgs, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; ComboBox1: TComboBox; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; Chart:Variant; const xlLocationAsNewSheet=1; //Размещение диаграммы на новом листе xlLocationAsObject=2; //Размещение диаграммы на листе с данными {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и отображение окна begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание рабочей книги begin E.WorkBooks.Add; end; procedure TForm1.Button3Click(Sender: TObject); //Добавление диаграммы и получение ссылки на нее var i:Integer; const xl3DColumn=-4100; xlColumns=2; begin Randomize; for i:=1 to 5 do begin E.ActiveSheet.Cells(1,i):=i*(1+Random(50)); E.ActiveSheet.Cells(2,i):=i*(1+Random(50)); E.ActiveSheet.Cells(3,i):=i*(1+Random(50)); E.ActiveSheet.Cells(4,i):=i*(1+Random(50)); E.ActiveSheet.Cells(5,i):=i*(1+Random(50)); end; Chart:=E.Charts.Add; Chart.ChartType:=xl3DColumn; Chart.SetSourceData(Source:=E.ActiveWorkbook.Sheets.Item['Лист1'].Range['A1:F5'], PlotBy:=xlColumns); end; procedure TForm1.Button4Click(Sender: TObject); //Перемещение диаграммы на лист с данными begin Chart.Location(Where:=xlLocationAsObject, Name:='Лист1'); Chart:=E.ActiveChart; end; procedure TForm1.Button5Click(Sender: TObject); //Перемещение диаграммы на новый лист begin Chart.Location(Where:=xlLocationAsNewSheet); Chart:=E.ActiveChart; end; procedure TForm1.ComboBox1Change(Sender: TObject); //Изменение типа диаграммы begin Chart.ChartType:=ComboBox1.ItemIndex+51; end; end.
Полный перечень значений констант свойства ChartType можно взять в таблице 1 170 шага.
На следующем шаге мы рассмотрим объектную модель диаграммы.