На этом шаге мы рассмотрим задание колонтитулов.
Колонтитулы представляют собой надписи на печатной странице в ее верхней части и нижней части. Кроме номера страницы, они могут содержать произвольный текст, текст, связанный с документом и его свойствами, а также текущую дату и время. Колонтитулы могут также представлять собой комбинации этих данных. Печатная страница может содержать верхний и нижний колонтитулы. Доступ к их содержимому осуществляется через шесть свойств объекта PageSetup, т.к. каждый колонтитул может содержать до трех частей:
Просмотреть содержимое колонтитулов можно только на распечатанной странице или в режиме "предварительный просмотр", а запрограммировать их возможно в обычном режиме, используя соответствующие свойства объекта PageSetup.
Ниже приведена процедура, позволяющая задать все части колонтитулов.
procedure TForm1.Button7Click(Sender: TObject); //Установить колонтитулы begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Установить колонтитулы ST.PageSetup.CenterHeader:=Edit8.Text; ST.PageSetup.RightHeader:=Edit9.Text; ST.PageSetup.LeftHeader:=Edit10.Text; ST.PageSetup.CenterFooter:=Edit11.Text; ST.PageSetup.RightFooter:=Edit12.Text; ST.PageSetup.LeftFooter:=Edit13.Text; end;
Результат ее работы приведен на рисунке 1.
Рис.1. Установленные колонтитулы
Можно изменить шрифт текста и тип содержимого колонтитулов. Например, можно записать в части колонтитулов следующие последовательности символов для отображения специальной информации в колонтитуле:
Комбинация из символа & и числа задает размер шрифта для текста в соответствующей части колонтитула. Например, оператор PageSetup.LeftHeader:= '&28'; установит размер шрифта в 28 пунктов для текста в левой части верхнего колонтитула.
Используя эти особенности, установим для верхнего центрального колонтитула новый размер шрифта, равный 28 пунктов. Результат представлен на рисунке 2.
Рис.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; TabSheet3: TTabSheet; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; TabSheet4: TTabSheet; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Edit12: TEdit; Edit13: TEdit; Button7: TButton; Button8: 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); procedure Edit2Change(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Edit4Change(Sender: TObject); procedure Edit5Change(Sender: TObject); procedure Edit6Change(Sender: TObject); procedure Edit7Change(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(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; procedure TForm1.Edit2Change(Sender: TObject); //Задание размеров левого поля begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Задание размеров левого поля ST.PageSetup.LeftMargin:=StrToInt(Edit2.Text); end; procedure TForm1.Edit3Change(Sender: TObject); //Задание размеров правого поля begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Задание размеров правого поля ST.PageSetup.RightMargin:=StrToInt(Edit3.Text); end; procedure TForm1.Edit4Change(Sender: TObject); //Задание размеров верхнего поля begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Задание размеров верхнего поля ST.PageSetup.TopMargin:=StrToInt(Edit4.Text); end; procedure TForm1.Edit5Change(Sender: TObject); //Задание размеров нижнего поля begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Задание размеров нижнего поля ST.PageSetup.BottomMargin:=StrToInt(Edit5.Text); end; procedure TForm1.Edit6Change(Sender: TObject); //Задание размеров поля верхнего колонтитула begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Задание размеров поля верхнего колонтитула ST.PageSetup.HeaderMargin:=StrToInt(Edit6.Text); end; procedure TForm1.Edit7Change(Sender: TObject); //Задание размеров поля нижнего колонтитула begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Задание размеров поля нижнего колонтитула ST.PageSetup.FooterMargin:=StrToInt(Edit7.Text); end; procedure TForm1.Button7Click(Sender: TObject); //Установить колонтитулы begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Установить колонтитулы ST.PageSetup.CenterHeader:=Edit8.Text; ST.PageSetup.RightHeader:=Edit9.Text; ST.PageSetup.LeftHeader:=Edit10.Text; ST.PageSetup.CenterFooter:=Edit11.Text; ST.PageSetup.RightFooter:=Edit12.Text; ST.PageSetup.LeftFooter:=Edit13.Text; end; procedure TForm1.Button8Click(Sender: TObject); //Изменение шрифта верхнего центрального колонтитула begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; //Изменение шрифта верхнего центрального колонтитула ST.PageSetup.CenterHeader:='&28'+Edit8.Text; end; end.
На следующем шаге мы рассмотрим ориентацию страницы.