Шаг 85.
Автоматизация Microsoft Word. Работа с объектами в документе Word. Настройка страницы (окончание)

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

    Создадим новый документ и с помощью объекта PageSetup определим его основные параметры. Для этого используем форму в виде диалога (рисунок 1). После создания диалога его элементы управления будут содержать информацию об ориентации страницы, ее размерах, полях и стиле вербального выравнивания текста. Используя эти же элементы управления, мы можем изменить основные параметры страницы, например, ориентацию (книжная/альбомная), стиль вертикального выравнивания, размер бумаги и едичины левого и верхнего полей. Рассмотрим следующую процедуру.

procedure TForm1.Button6Click(Sender: TObject);
//Заполнение полей характеристиками текущего документа
begin
  PS:=W.ActiveDocument.PageSetup;
  CheckBox1.Checked:=PS.LineNumbering.Active;
  ComboBox1.ItemIndex:=PS.Orientation;
  ComboBox2.ItemIndex:=PS.VerticalAlignment;
  Edit1.Text:=IntToStr(PS.PageWidth);
  Edit2.Text:=IntToStr(PS.PageHeight);
  Edit3.Text:=IntToStr(PS.TopMargin);
  Edit4.Text:=IntToStr(PS.LeftMargin);
end;

    На рисунке 1 представлена форма, в элементах которой отображается считанная из свойств объекта PageSetup активного документа информация о параметрах страницы активного документа.


Рис.1. Параметры страницы документа Word

    Изменим некоторые параметры страницы. Например, установим альбомную ориентацию и добавим вторую колонку для вывода текста, установив ее ширину в 200 пикселей. Для этой цели используем свойства и методы коллекции TextColumns объекта PageSetup. После изменения ориентации листа с книжной на альбомную или наоборот, считаем новые значения ширины ц высоты страницы, а также новые величины полей.

procedure TForm1.ComboBox1Change(Sender: TObject);
//Изменение ориентации страницы
begin
  PS.Orientation:=ComboBox1.ItemIndex;
  Edit1.Text:=IntToStr(PS.PageWidth);
  Edit2.Text:=IntToStr(PS.PageHeight);
  Edit3.Text:=IntToStr(PS.TopMargin);
  Edit4.Text:=IntToStr(PS.LeftMargin);
end;

procedure TForm1.Button1Click(Sender: TObject);
//Добавление колонки
begin
  if PS.TextColumns.count<2 then
      PS.TextColumns.Add(200);
end;

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


Рис.2. Измененная страница документа Word

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

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    Label1: TLabel;
    ComboBox1: TComboBox;
    Label2: TLabel;
    ComboBox2: TComboBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    UpDown1: TUpDown;
    UpDown2: TUpDown;
    UpDown3: TUpDown;
    UpDown4: TUpDown;
    Button5: TButton;
    Button6: TButton;
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  W:Variant;
  PS:Variant;
{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
//Выход
begin
  W.Quit;
  Close;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Создание нового документа
begin
  W:=CreateOleObject('Word.Application');
  W.Visible:=True;
  W.Documents.Add;
end;

procedure TForm1.Button6Click(Sender: TObject);
//Заполнение полей характеристиками текущего документа
begin
  PS:=W.ActiveDocument.PageSetup;
  CheckBox1.Checked:=PS.LineNumbering.Active;
  ComboBox1.ItemIndex:=PS.Orientation;
  ComboBox2.ItemIndex:=PS.VerticalAlignment;
  Edit1.Text:=IntToStr(PS.PageWidth);
  Edit2.Text:=IntToStr(PS.PageHeight);
  Edit3.Text:=IntToStr(PS.TopMargin);
  Edit4.Text:=IntToStr(PS.LeftMargin);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Изменение ориентации страницы
begin
  PS.Orientation:=ComboBox1.ItemIndex;
  Edit1.Text:=IntToStr(PS.PageWidth);
  Edit2.Text:=IntToStr(PS.PageHeight);
  Edit3.Text:=IntToStr(PS.TopMargin);
  Edit4.Text:=IntToStr(PS.LeftMargin);
end;

procedure TForm1.Button1Click(Sender: TObject);
//Добавление колонки
begin
  if PS.TextColumns.count<2 then
      PS.TextColumns.Add(200);
end;

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

    В заключение приведем возможные значения ориентации страницы и вертикального выравнивания.

Таблица 1. Ориентация страницы
Константа Значение
wdOrientPortrait 0 (книжная)
wdOrientLandscape 1 (альбомная)

Таблица 2. Вертикальное выравнивание
Константа Значение
wdAlignVerticalTop 0
wdAlignVerticalCenter 1
wdAlignVerticalJustify 2
wdAlignVerticalBottom 3

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




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