На этом шаге мы рассмотрим задание номера первой страницы.
Номер первой страницы печати определяется свойством FirstPageNumber объекта PageSetup. Если оно имеет значение xlAutomatic (-4105), то номер первой страницы определяется "по умолчанию". Чтобы задать конкретный номер первой страницы, нужно в свойство FirstPageNumber записать его значение. Следующая процедура позволяет задать номер первой страницы в приложениях Delphi.
procedure TForm1.Button9Click(Sender: TObject); //Задание номера первой страницы begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; if CheckBox1.Checked then ST.PageSetup.FirstPageNumber:=-4105//xlAutomatic else ST.PageSetup.FirstPageNumber:=StrToInt(Edit14.Text); 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; 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; TabSheet5: TTabSheet; RadioGroup1: TRadioGroup; Label18: TLabel; ComboBox2: TComboBox; TabSheet6: TTabSheet; CheckBox1: TCheckBox; Label19: TLabel; Edit14: TEdit; Button9: 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); procedure RadioGroup1Click(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure Button9Click(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; procedure TForm1.RadioGroup1Click(Sender: TObject); //Ориентация begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; case RadioGroup1.ItemIndex of 0: ST.PageSetup.Orientation:=1; //xlPortrait 1: ST.PageSetup.Orientation:=2; //xlLandscape end; end; procedure TForm1.ComboBox2Change(Sender: TObject); //Размер бумаги begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; ST.PageSetup.PaperSize:=ComboBox2.ItemIndex+1; end; procedure TForm1.Button9Click(Sender: TObject); //Задание номера первой страницы begin //Получение ссылки на 1-й лист рабочей книги ST:=E.Sheets.Item[1]; if CheckBox1.Checked then ST.PageSetup.FirstPageNumber:=-4105//xlAutomatic else ST.PageSetup.FirstPageNumber:=StrToInt(Edit14.Text); end; end.
На следующем шаге мы рассмотрим способы выбора масштаба документа.