Шаг 171.
Автоматизация Microsoft Excel. Диаграммы в рабочей книге Excel.
Размещение диаграммы

    На этом шаге мы рассмотрим метод, позволяющий определить местоположение диаграммы.

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

    В приложении с прошлого шага диаграмма создана на отдельном листе. С помощью следующих процедур переместим ее на первый лист рабочей книги - туда, где располагаются данные для построения диаграммы, затем переместим обратно на отдельный лист.

.   .   .   .
const
  xlLocationAsNewSheet=1; //Размещение диаграммы на новом листе
  xlLocationAsObject=2; //Размещение диаграммы на листе с данными
.   .   .   .
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;

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

    На рисунках 1 и 2 приведены результаты работы приложения.


Рис.1. Диаграмма на листе с данными


Рис.2. Диаграмма на отдельном листе

    Вот полный текст приложения.

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;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(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;

end.
Текст этого приложения можно взять здесь (6,6 Кб).

    На следующем шаге мы рассмотрим тип диаграммы.




Предыдущий шаг Содержание Следующий шаг