Шаг 75.
Автоматизация Microsoft Word. Работа с объектами в документе Word. Заливка надписи (окончание)

    На этом шаге мы рассмотрим еще несколько способов заливки надписи.

    В качестве текстуры можно также использовать рисунок, загружаемый из файла. Для этого применим метод UserTextured объекта Fill. Единственный аргумент этого метода - строка - ссылка на путь и имя графического файла.

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

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button6: TButton;
    ListBox1: TListBox;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    SpinButton1: TSpinButton;
    SpinButton2: TSpinButton;
    SpinButton3: TSpinButton;
    SpinButton4: TSpinButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Label7: TLabel;
    ColorDialog1: TColorDialog;
    Button4: TButton;
    Button5: TButton;
    CheckBox1: TCheckBox;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label8: TLabel;
    Label9: TLabel;
    ComboBox3: TComboBox;
    Label10: TLabel;
    ComboBox4: TComboBox;
    Button7: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure SpinButton1DownClick(Sender: TObject);
    procedure SpinButton1UpClick(Sender: TObject);
    procedure SpinButton2DownClick(Sender: TObject);
    procedure SpinButton2UpClick(Sender: TObject);
    procedure SpinButton3DownClick(Sender: TObject);
    procedure SpinButton3UpClick(Sender: TObject);
    procedure SpinButton4DownClick(Sender: TObject);
    procedure SpinButton4UpClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
//Создание надписи
const msoTextOrientationHorizontal=1;
var
  left,top:Extended;
begin
  left:=10;
  top:=11;
  if W.ActiveDocument.Shapes.Count>0 then begin
   if W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
         2*(W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10)<
          W.ActiveDocument.PageSetup.PageWidth
      then begin
      left:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
         W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10;
      top :=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top;
           end
      else begin
      left:=10;
      top:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top+
         W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Height+10.15;
           end;
   end;
   W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,
     left, top, 200, 100, W.ActiveDocument.Range);
end;

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

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

procedure TForm1.Button3Click(Sender: TObject);
// Загружаем в ListBoxl имена объектов коллекции Shapes
//из документа Word.
  var
    a: Integer;
begin
  ListBox1.Items.Clear;
  for a:=1 to W.ActiveDocument.Shapes.Count do
    ListBox1.Items.Add(W.ActiveDocument.Shapes.Item(a).Name);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
// При активизации строки объекта ListBoxl, используя имя объекта,
// выделяем его из коллекции Shapes и записываем ссылку на этот объект
//в переменную WordTextBox. Затем в компонент Edit1 записываем текстовое
// содержимое этого объекта.
begin
  W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]).Select;
  WordTextBox:=W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]);
  Edit1.Text:=WordTextBox.TextFrame.TextRange.Text;
end;

procedure TForm1.Edit1Change(Sender: TObject);
// При активизации компонента Edit1 типа TEdit записываем введенный
//в него текст непосредственно в объект TextBox документа Word.
begin
  WordTextBox.TextFrame.TextRange.Text:=Edit1.Text;
end;

// Следующие две процедуры регулируют величину отступа левой границы
// текста от левой границы надписи.
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft-0.25;
end;

procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft+0.25;
end;

// Следующие две процедуры регулируют величину отступа правой границы
// текста от правой границы надписи.

procedure TForm1.SpinButton2DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight-0.25;
end;

procedure TForm1.SpinButton2UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight+0.25;
end;

// Следующие две процедуры регулируют величину отступа верхней границы
// текста от верхней границы надписи.

procedure TForm1.SpinButton3DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop-0.25;
end;

procedure TForm1.SpinButton3UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop+0.25;
end;

// Следующие две процедуры регулируют величину отступа нижней границы
// текста от нижней границы надписи.

procedure TForm1.SpinButton4DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom-0.25;
end;

procedure TForm1.SpinButton4UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom+0.25;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Задание цвета области надписи
begin
  if not ColorDialog1.Execute then exit;
  WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Задание второго цвета
begin
  if not ColorDialog1.Execute then exit;
  WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
//Задание градиента
begin
  if CheckBox1.Checked then
    WordTextBox.Fill.TwoColorGradient(ComboBox1.ItemIndex+1,
           ComboBox2.ItemIndex+1)
  else WordTextBox.Fill.Solid;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
//Использование предопределенного градиента
begin
    WordTextBox.Fill.PresetGradient(ComboBox1.ItemIndex+1,
           ComboBox2.ItemIndex+1,ComboBox3.ItemIndex+1)
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
//Использование предопределенной текстуры для заливки надписи
begin
  WordTextBox.Fill.PresetTextured(ComboBox4.ItemIndex+1);
end;

procedure TForm1.Button7Click(Sender: TObject);
//Выбор рисунка в качестве текстуры для надписи
begin
   If OpenPictureDialog1.Execute Then
      WordTextBox.Fill.UserTextured(OpenPictureDialog1.FileName);
end;

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

    Результат работы приложения можно увидеть на рисунке 1:


Рис.1. Результат работы приложения

    Рисунок, загружаемый из файла, можно использовать не только в качестве текстуры, но и как фоновый рисунок (заливку), который сжимается или растягивается, вписываясь в размеры области объекта TextBox. Метод UserPicture, аргументом которого является строка - путь и имя графического файла, позволяет использовать рисунок в качестве фона объекта TextBox. Рассмотрим следующее приложение (как обычно, последняя процедура решает поставленную задачу).

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button6: TButton;
    ListBox1: TListBox;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    SpinButton1: TSpinButton;
    SpinButton2: TSpinButton;
    SpinButton3: TSpinButton;
    SpinButton4: TSpinButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Label7: TLabel;
    ColorDialog1: TColorDialog;
    Button4: TButton;
    Button5: TButton;
    CheckBox1: TCheckBox;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label8: TLabel;
    Label9: TLabel;
    ComboBox3: TComboBox;
    Label10: TLabel;
    ComboBox4: TComboBox;
    Button7: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Button8: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure SpinButton1DownClick(Sender: TObject);
    procedure SpinButton1UpClick(Sender: TObject);
    procedure SpinButton2DownClick(Sender: TObject);
    procedure SpinButton2UpClick(Sender: TObject);
    procedure SpinButton3DownClick(Sender: TObject);
    procedure SpinButton3UpClick(Sender: TObject);
    procedure SpinButton4DownClick(Sender: TObject);
    procedure SpinButton4UpClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
//Создание надписи
const msoTextOrientationHorizontal=1;
var
  left,top:Extended;
begin
  left:=10;
  top:=11;
  if W.ActiveDocument.Shapes.Count>0 then begin
   if W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
      2*(W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10)<
        W.ActiveDocument.PageSetup.PageWidth
      then begin
      left:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
        W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10;
      top :=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top;
           end
      else begin
      left:=10;
      top:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top+
        W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Height+10.15;
           end;
   end;
   W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,
     left, top, 200, 100, W.ActiveDocument.Range);
end;

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

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

procedure TForm1.Button3Click(Sender: TObject);
// Загружаем в ListBoxl имена объектов коллекции Shapes
//из документа Word.
  var
    a: Integer;
begin
  ListBox1.Items.Clear;
  for a:=1 to W.ActiveDocument.Shapes.Count do
    ListBox1.Items.Add(W.ActiveDocument.Shapes.Item(a).Name);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
// При активизации строки объекта ListBoxl, используя имя объекта,
// выделяем его из коллекции Shapes и записываем ссылку на этот объект
//в переменную WordTextBox. Затем в компонент Edit1 записываем текстовое
// содержимое этого объекта.
begin
  W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]).Select;
  WordTextBox:=W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]);
  Edit1.Text:=WordTextBox.TextFrame.TextRange.Text;
end;

procedure TForm1.Edit1Change(Sender: TObject);
// При активизации компонента Edit1 типа TEdit записываем введенный
//в него текст непосредственно в объект TextBox документа Word.
begin
  WordTextBox.TextFrame.TextRange.Text:=Edit1.Text;
end;

// Следующие две процедуры регулируют величину отступа левой границы
// текста от левой границы надписи.
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft-0.25;
end;

procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft+0.25;
end;

// Следующие две процедуры регулируют величину отступа правой границы
// текста от правой границы надписи.

procedure TForm1.SpinButton2DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight-0.25;
end;

procedure TForm1.SpinButton2UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight+0.25;
end;

// Следующие две процедуры регулируют величину отступа верхней границы
// текста от верхней границы надписи.

procedure TForm1.SpinButton3DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop-0.25;
end;

procedure TForm1.SpinButton3UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop+0.25;
end;

// Следующие две процедуры регулируют величину отступа нижней границы
// текста от нижней границы надписи.

procedure TForm1.SpinButton4DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom-0.25;
end;

procedure TForm1.SpinButton4UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom+0.25;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Задание цвета области надписи
begin
  if not ColorDialog1.Execute then exit;
  WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Задание второго цвета
begin
  if not ColorDialog1.Execute then exit;
  WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
//Задание градиента
begin
  if CheckBox1.Checked then
    WordTextBox.Fill.TwoColorGradient(ComboBox1.ItemIndex+1,
           ComboBox2.ItemIndex+1)
  else WordTextBox.Fill.Solid;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
//Использование предопределенного градиента
begin
    WordTextBox.Fill.PresetGradient(ComboBox1.ItemIndex+1,
           ComboBox2.ItemIndex+1,ComboBox3.ItemIndex+1)
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
//Использование предопределенной текстуры для заливки надписи
begin
  WordTextBox.Fill.PresetTextured(ComboBox4.ItemIndex+1);
end;

procedure TForm1.Button7Click(Sender: TObject);
//Выбор рисунка в качестве текстуры для надписи
begin
   If OpenPictureDialog1.Execute Then
      WordTextBox.Fill.UserTextured(OpenPictureDialog1.FileName);
end;

procedure TForm1.Button8Click(Sender: TObject);
//Выбор рисунка в качестве фона для надписи
begin
   If OpenPictureDialog1.Execute Then
      WordTextBox.Fill.UserPicture(OpenPictureDialog1.FileName);
end;

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

    Результат работы приложения можно увидеть на рисунке 2:


Рис.2. Результат работы приложения

    Еще одним и последним способом задания фона текстовой области надписи является использование узора. Узор определяется собственно рисунком (штриховкой), а также цветом фона и цветом штриховки. Узор определяется константой, выбираемой более чем из сотни возможных. Для выбора узора используется метод Patterned(Pattern: Integer) объекта Fill, где Pattern определяет используемую штриховку. Для задания цветов фона и штриховки в формате RGB предназначены свойства BackColor.RGB и ForeColor.RGB. Рассмотрим следующий исходный код.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button6: TButton;
    ListBox1: TListBox;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    SpinButton1: TSpinButton;
    SpinButton2: TSpinButton;
    SpinButton3: TSpinButton;
    SpinButton4: TSpinButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Label7: TLabel;
    ColorDialog1: TColorDialog;
    Button4: TButton;
    Button5: TButton;
    CheckBox1: TCheckBox;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label8: TLabel;
    Label9: TLabel;
    ComboBox3: TComboBox;
    Label10: TLabel;
    ComboBox4: TComboBox;
    Button7: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Button8: TButton;
    Label11: TLabel;
    Button9: TButton;
    Button10: TButton;
    Label12: TLabel;
    ComboBox5: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure SpinButton1DownClick(Sender: TObject);
    procedure SpinButton1UpClick(Sender: TObject);
    procedure SpinButton2DownClick(Sender: TObject);
    procedure SpinButton2UpClick(Sender: TObject);
    procedure SpinButton3DownClick(Sender: TObject);
    procedure SpinButton3UpClick(Sender: TObject);
    procedure SpinButton4DownClick(Sender: TObject);
    procedure SpinButton4UpClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure ComboBox5Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
//Создание надписи
const msoTextOrientationHorizontal=1;
var
  left,top:Extended;
begin
  left:=10;
  top:=11;
  if W.ActiveDocument.Shapes.Count>0 then begin
   if W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
      2*(W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10)<
        W.ActiveDocument.PageSetup.PageWidth
      then begin
      left:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Left+
        W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Width+10;
      top :=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top;
           end
      else begin
      left:=10;
      top:=W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Top+
         W.ActiveDocument.Shapes.Item(W.ActiveDocument.Shapes.Count).Height+10.15;
           end;
   end;
   W.ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal,
     left, top, 200, 100, W.ActiveDocument.Range);
end;

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

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

procedure TForm1.Button3Click(Sender: TObject);
// Загружаем в ListBoxl имена объектов коллекции Shapes
//из документа Word.
  var
    a: Integer;
begin
  ListBox1.Items.Clear;
  for a:=1 to W.ActiveDocument.Shapes.Count do
    ListBox1.Items.Add(W.ActiveDocument.Shapes.Item(a).Name);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
// При активизации строки объекта ListBoxl, используя имя объекта,
// выделяем его из коллекции Shapes и записываем ссылку на этот объект
// в переменную WordTextBox. Затем в компонент Edit1 записываем текстовое
// содержимое этого объекта.
begin
  W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]).Select;
  WordTextBox:=W.ActiveDocument.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]);
  Edit1.Text:=WordTextBox.TextFrame.TextRange.Text;
end;

procedure TForm1.Edit1Change(Sender: TObject);
// При активизации компонента Edit1 типа TEdit записываем введенный
//в него текст непосредственно в объект TextBox документа Word.
begin
  WordTextBox.TextFrame.TextRange.Text:=Edit1.Text;
end;

// Следующие две процедуры регулируют величину отступа левой границы
// текста от левой границы надписи.
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft-0.25;
end;

procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginLeft:=WordTextBox.TextFrame.MarginLeft+0.25;
end;

// Следующие две процедуры регулируют величину отступа правой границы
// текста от правой границы надписи.

procedure TForm1.SpinButton2DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight-0.25;
end;

procedure TForm1.SpinButton2UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginRight:=WordTextBox.TextFrame.MarginRight+0.25;
end;

// Следующие две процедуры регулируют величину отступа верхней границы
// текста от верхней границы надписи.

procedure TForm1.SpinButton3DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop-0.25;
end;

procedure TForm1.SpinButton3UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginTop:=WordTextBox.TextFrame.MarginTop+0.25;
end;

// Следующие две процедуры регулируют величину отступа нижней границы
// текста от нижней границы надписи.

procedure TForm1.SpinButton4DownClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom-0.25;
end;

procedure TForm1.SpinButton4UpClick(Sender: TObject);
begin
  WordTextBox.TextFrame.MarginBottom:=WordTextBox.TextFrame.MarginBottom+0.25;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Задание цвета области надписи
begin
  if not ColorDialog1.Execute then exit;
  WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Задание второго цвета
begin
  if not ColorDialog1.Execute then exit;
  WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
//Задание градиента
begin
  if CheckBox1.Checked then
    WordTextBox.Fill.TwoColorGradient(ComboBox1.ItemIndex+1,
           ComboBox2.ItemIndex+1)
  else WordTextBox.Fill.Solid;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
//Использование предопределенного градиента
begin
    WordTextBox.Fill.PresetGradient(ComboBox1.ItemIndex+1,
           ComboBox2.ItemIndex+1,ComboBox3.ItemIndex+1)
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
//Использование предопределенной текстуры для заливки надписи
begin
  WordTextBox.Fill.PresetTextured(ComboBox4.ItemIndex+1);
end;

procedure TForm1.Button7Click(Sender: TObject);
//Выбор рисунка в качестве текстуры для надписи
begin
   If OpenPictureDialog1.Execute Then
      WordTextBox.Fill.UserTextured(OpenPictureDialog1.FileName);
end;

procedure TForm1.Button8Click(Sender: TObject);
//Выбор рисунка в качестве фона для надписи
begin
   If OpenPictureDialog1.Execute Then
      WordTextBox.Fill.UserPicture(OpenPictureDialog1.FileName);
end;

procedure TForm1.Button9Click(Sender: TObject);
//Выбор цвета штриховки
begin
   if ColorDialog1.Execute then
      WordTextBox.Fill.ForeColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.Button10Click(Sender: TObject);
//Выбор цвета фона
begin
   if ColorDialog1.Execute then
      WordTextBox.Fill.BackColor.RGB:=ColorDialog1.Color;
end;

procedure TForm1.ComboBox5Change(Sender: TObject);
//Выбор вида штриховки
begin
  WordTextBox.Fill.Patterned(ComboBox5.ItemIndex+1);
end;

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

    Процедура TForm1.Button9Click() определяет цвет штриховки, а следующпя - цвет фона. Цвета выбираются с помощью диалога ColorDialog1, возвращающего значение цвета как комбинацию значений в формате RGB. Последняя процедура определяет вид штриховки с помощью элемента управления TComboBox (комбинированный список). Внешний вид формы с элементами управления и результат выполнения программы представлены на рисунке 3.


Рис.3. Результат работы приложения

    В заключение приведем перечень видов штриховок.

Таблица 1. Предопределенные штриховки
Мнемоническое обозначение Константа
msoPattern5Percent 1
msoPattern10Percent 2
msoPattern20Percent 3
msoPattern25Percent 4
msoPattern30Percent 5
msoPattern40Percent 6
msoPattern50Percent 7
msoPattern60Percent 8
msoPattern70Percent 9
msoPattern75Percent 10
msoPattern80Percent 11
msoPattern90Percent 12
msoPatternDarkHorizontal 13
msoPatternDarkVertical 14
msoPatternDarkDownwardDiagonal 15
msoPatternDarkUpwardDiagonal 16
msoPatternSmallCheckerBoard 17
msoPatternTrellis 18
msoPatternLightHorizontal 19
msoPatternLightVertical 20
msoPatternLightDownwardDiagonal 21
msoPatternLightUpwardDiagonal 22
msoPatternSmallGrid 23
msoPatternDottedDiamond 24
msoPatternWideDownwardDiagonal 25
msoPatternWideUpwardDiagonal 26
msoPatternDashedUpwardDiagonal 27
msoPatternDashedDownwardDiagonal 28
msoPatternNarrowVertical 29
msoPatternNarrowHorizontal 30
msoPatternDashedVertical 31
msoPatternDashedHorizontal 32
msoPatternLargeConfetti 33
msoPatternLargeGrid 34
msoPatternHorizontalBrick 35
msoPatternLargeCheckerBoard 36
msoPatternSmallConfetti 37
msoPatternZigZag 38
msoPatternSolidDiamond 39
msoPatternDiagonalBrick 40
msoPatternOutlinedDiamond 41
msoPatternPlaid 42
msoPatternSphere 43
msoPatternWeave 44
msoPatternDottedGrid 45
msoPatternDivot 46
msoPatternShingle 47
msoPatternWave 48

    На следующем шаге мы рассмотрим способы изменения границы надписи.




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