На этом шаге мы рассмотрим способ изменения области печати.
Лист рабочей книги может содержать огромное количество информации и достаточно велик. К тому же не всегда нужно печатать всю информацию листа. Достаточно (а часто - требуется) выводить на печать только определенную область ячеек. Значит, нужна возможность задавать эту область. Для этого предназначено свойство PrintArea объекта PageSetup, содержащее строку адреса прямоугольной области. Изменяя значение PrintArea, мы изменяем область печати.
В следующей процедуре задается область печати первой страницы рабочей книги.
procedure TForm1.Button6Click(Sender: TObject); //Переопределение области печати begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Переопределение области печати ST.PageSetup.PrintArea:=Edit1.Text; end;
На рисунке 1 приведен пример использования этой процедуры для задания области печати A1:B10 первой страницы (на рисунке страница находится в режиме разметки).
Рис.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; PageControl1: TPageControl; TabSheet1: TTabSheet; Label2: TLabel; ListBox1: TListBox; Button5: TButton; TabSheet2: TTabSheet; Label3: TLabel; Edit1: TEdit; Button6: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(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.VPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]); ST.HPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]); ListBox1.Items.Clear; ListBox1.Items.Add('Горизонтальные разрывы'); for i:=1 to ST.HPageBreaks.Count do ListBox1.Items.Add(IntToStr(i)); ListBox1.Items.Add('Вертикальные разрывы'); for i:=1 to ST.VPageBreaks.Count do ListBox1.Items.Add(IntToStr(i)); ListBox1.ItemIndex:=0; end; procedure TForm1.Button5Click(Sender: TObject); //Перенос линий разрывов страниц begin ST.HPageBreaks.Item[1].Location:=ST.Range['A5:A5']; ST.VPageBreaks.Item[1].Location:=ST.Range['C4:C4']; end; procedure TForm1.Button6Click(Sender: TObject); //Переопределение области печати begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Переопределение области печати ST.PageSetup.PrintArea:=Edit1.Text; end; end.
На следующем шаге мы рассмотрим задание полей страницы.