На этом шаге мы рассмотрим алгоритм добавления разрыва страницы.
Используя свойства и методы коллекций HPageBreaks и VPageBreaks листа рабочей книги, мы получаем доступ и возможность манипулировать разметкой листа. Элементы этих коллекций содержат информацию о разрывах страниц и позволяют изменять или удалять их. Добавление новых элементов в коллекцию осуществляется с помощью метода Add, аргументом которого является ссылка на ячейку, до которой вставляется разрыв. Следующая процедура позволяет добавить разрыв в точке расположения ячейки с координатами 10:2, после чего загрузить в компонент ListBox1 номера всех элементов коллекции, в том числе и вновь созданного.
procedure TForm1.Button4Click(Sender: TObject); //Добавление разрыва страницы var i:integer; begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; ST.HPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]); ListBox1.Items.Clear; for i:=1 to ST.HPageBreaks.Count do ListBox1.Items.Add(IntToStr(i)); ListBox1.ItemIndex:=0; end;
Для задания точки разрыва можно использовать не только ссылку на ячейку Cells, но и ссылку на область ячеек Range. Тогда третий оператор описанной выше процедуры будет выглядеть так:
ST.HPageBreaks.Add(Before:=E.ActiveSheet.Range[Range.Text]);
Здесь объект Range.Text задает адрес области ячеек. Результат добавления новой точки разрыва страницы в обоих случаях будет одним и тем же (рисунок 1).
Рис.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; Label1: TLabel; ComboBox1: TComboBox; OpenDialog1: TOpenDialog; Button4: TButton; Label2: TLabel; ListBox1: TListBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; ST:variant; {$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); //Открытие рабочей книги begin if OpenDialog1.Execute then E.WorkBooks.Open(OpenDialog1.FileName); end; procedure TForm1.ComboBox1Change(Sender: TObject); //Переключение вида документа begin case ComboBox1.ItemIndex of 0:E.ActiveWindow.View:=1; //xlNormalView; 1:E.ActiveWindow.View:=2; //xlPageBreakPreview; end; end; procedure TForm1.Button4Click(Sender: TObject); //Добавление разрыва страницы var i:integer; begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; ST.HPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]); ListBox1.Items.Clear; for i:=1 to ST.HPageBreaks.Count do ListBox1.Items.Add(IntToStr(i)); ListBox1.ItemIndex:=0; end; end.
На следующем шаге мы рассмотрим изменение положения разрыва страницы.