Шаг 54.
Автоматизация Microsoft Word. Создание простого документа. Свойства и методы объекта Selection

    На этом шаге мы рассмотрим некоторые свойства и методы объекта Selection.

    Рассмотрим некоторые свойства и методы этого объекта, в том числе принадлежащие ему объекты. В таблице 1 перечислены наиболее часто используемые свойства и методы объекта Selection, их типы и краткое описание.

Таблица 1. Свойства и методы объекта Selection
Свойства и методы Тип Описание
Туре Число Тип выделенного объекта (обычный текст Type = wdSelectionNormal = 2)
StoryType Число Тип выделяемого объекта (может быть выделен основной текст, текст в заголовках, комментариях и т. п.)
Text Строка Текстовое содержимое
Start Число Начальная позиция выделенного объекта
End Число Конечная позиция выделенного объекта
Characters Коллекция Символы выделенного объекта, их количество
ConvertToTable Метод Преобразование выделенного текста в таблицу
Copy Метод Копирование текста в буфер обмена
Paste Метод Вставка текста из буфера обмена
CopyAsPicture Метод Копирование выделенного текста (объекта) в буфер обмена с преобразованием его в графический объект в формате BMP
Cut Метод Вырезание выделенного фрагмента текста
Delete(a, b) Метод Удаление выделенного фрагмента текста (вызов без аргументов) или удаление фрагмента из b символов начиная с позиции а
Find Объект Поиск, поиск и замена в документе
Font Объект Шрифт выделенного объекта
InRange(MyRange) Метод Проверка вхождения выделенного объекта в объект MyRange
InsertAfter Метод Вставка текста после объекта Selection
InsertBefore Метод Вставка текста до объекта Selection
Move(Unit, Count) Метод Перемещение объекта Selection в документе (перемещение курсора)
SetRange(a, b) Метод Выделение текста между позициями а и b
Style Число Стиль выделенного текста
TypeText Метод Вставка текста на место выделенного объекта или с позиции курсора
Words Коллекция Слова в выделенном объекте

    Рассмотрим подробнее некоторые свойства объекта Selection.

    При работе с текстом требуется уверенность в том, что это именно текст, чтобы не применять методы, свойственные тексту, к другим объектам, и наоборот. Если применить к выделенному тексту методы, свойственные, например, ячейкам таблицы, будет получена ошибка выполнения. Определить тип выделенного объекта позволяет свойство Туре. Если Туре = wdSelectionNormal, это значит, что выделенный объект является текстом, при этом свойство Text объекта Selection содержит выделенный текст.

    Свойства Start и End определяют начальную и конечную позицию (в символах) выделенного фрагмента текста. Если Selection.Start = Selection.End, то размер выделенного объекта равен нулю, т.е. ничего не выделено. Но при этом объект Selection все равно существует. Если Selection.Start = Selection.End = 0, это означает, что курсор находится в начале документа (при условии что наш документ содержит только текст). Используя свойства Start и End, можно установить курсор в любую позицию документа. Если Selection.Start <> Selection.End, то это означает, что выделен фрагмент текста между двумя позициями, значения которых записаны в эти поля. Присваивая им различные значения, можно манипулировать размерами выделенной области текста. Для примера откроем текст с помощью метода Open коллекции Documents и установим значения полей Start и End. Вот фрагмент исходного текста программы.

procedure TForm1.Button5Click(Sender: TObject);
//Start и End
begin
  W.Selection.Start:=13;
  W.Selection.End:=20;
end;

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


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

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

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    Button2: TButton;
    Button3: TButton;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  W:=CreateOleObject('Word.Application');
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  W.Visible:=CheckBox1.Checked;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Открытие документа
begin
  if OpenDialog1.Execute then
      W.Documents.Open(OpenDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
//Выделение текста
begin
 W.ActiveDocument.Range(1,15).Select;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Чтение текста
var
  S: String;
begin
  S:=W.Selection.Text; 
  MessageBox (handle, pchar(S), 'Чтение текста из выделенного фрагмента!',0);
end;

procedure TForm1.Button5Click(Sender: TObject);
//Start и End
begin
  W.Selection.Start:=13;
  W.Selection.End:=20;
end;

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

    Также нетрудно убедиться, что положение курсора будет изменяться при изменении свойств Start и End объекта Selection. Если их значения установить в ноль, то курсор переместится в начало документа, и переместится в конец документа, когда их значения будут равны количеству символов документа. Следующий фрагмент программного кода показывает, как переместить курсор в начало и конец документа.

procedure TForm1.Button6Click(Sender: TObject);
//В начало документа
begin
  W.Selection.Start:=W.ActiveDocument.Characters.0;
end;

procedure TForm1.Button7Click(Sender: TObject);
//В конец документа
begin
  W.Selection.End := W.ActiveDocument.Characters.Count;
end;

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


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

    Полный текст приложения:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    Button2: TButton;
    Button3: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  W:=CreateOleObject('Word.Application');
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  W.Visible:=CheckBox1.Checked;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Открытие документа
begin
  if OpenDialog1.Execute then
      W.Documents.Open(OpenDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
//Выделение текста
begin
 W.ActiveDocument.Range(1,15).Select;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Чтение текста
var
  S: String;
begin
  S:=W.Selection.Text; 
  MessageBox (handle, pchar(S), 'Чтение текста из выделенного фрагмента!',0);
end;

procedure TForm1.Button5Click(Sender: TObject);
//Start и End
begin
  W.Selection.Start:=13;
  W.Selection.End:=20;
end;

procedure TForm1.Button6Click(Sender: TObject);
//В начало документа
begin
  W.Selection.Start:=W.ActiveDocument.Characters.0;
end;

procedure TForm1.Button7Click(Sender: TObject);
//В конец документа
begin
  W.Selection.End := W.ActiveDocument.Characters.Count;
end;

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

    Манипуляции с полями Start и End - не единственный способ перемещения курсора или выделения объекта.

    На следующем шаге мы рассмотрим метод Move объекта Selection.




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