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

    На этом шаге мы закончим изучение методов объекта Selection.

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

    Для этого предназначен метод ConvertToTable объекта Selection. У этого метода имеется несколько аргументов, которые задают форматы и режимы преобразования. Один из основных аргументов - Separator (символ-разделитель). В таблицах, набранных в DOS, таким символом был элемент псевдографики. Используя этот аргумент, можно без труда преобразовать таблицы, оформленные до этого в обычном текстовом редакторе. Другой не менее важный параметр - Format (формат представления таблицы). Этот аргумент представлен переменной типа Integer и может принимать несколько значений. При преобразовании текста в таблицу можно также задать количество столбцов (NumColumns), строк (NumRows) и начальную ширину столбцов (InitialColumnWidth). Если не задавать все эти параметры, то преобразование произойдет в режиме "по умолчанию".

    Рассмотрим спецификацию вызова метода ConvertToTable в Visual Basic.

Selection.ConvertToTable(Separator, NumRows, NumColumns, 
        InitialColumnWidth, Format, ApplyBorders, ApplyShading, ApplyFont, 
        ApplyColor, ApplyHeadingRows, ApplyLastRow, ApplyFirstColumn, 
        ApplyLastColumn, AutoFit)

    Вызов этого метода в приложении Delphi будет выглядеть иначе в соответствии с принятой спецификацией языка программирования Pascal.

    Например, требуется преобразовать выделенный текст в таблицу из пяти столбцов. В качестве разделителя текста используем символ пробела, формат таблицы зададим константой wdTableFormatGrid2=17 и используем значения выбранных характеристик в качестве аргументов метода ConvertToTable. Смотрите исходный текст.

procedure TForm1.Button12Click(Sender: TObject);
//Метод ConvertToTable
const
   wdTableFormatGrid2=17;
begin
   W.Selection.ConvertToTable(Separator:=' ',NumRows:=5,NumColumns:=5,
          Format:=wdTableFormatGrid2);
end;

    Откроем произвольный документ и выделим фрагмент текста. После применения к выделенному тексту метода ConvertToTable получим результат, представленный на рисунке 1.


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

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

    Порядок нажатия кнопок в приложении.

  1. Создать окно Word;
  2. Отобразить окно;
  3. Открыть документ;
  4. Start и End;
  5. Метод ConvertToTable.

    Возможно, нам придется удалять некоторые фрагменты текста. Это можно сделать несколькими способами. Поскольку мы рассматриваем работу с объектом Selection, то используем для этой цели его метод Delete или Cut:

W.Selection.Delete; 
W.Selection.Cut;

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


    Примечание. Для удаления выделенного фрагмента можно также воспользоваться объектом Range. Так как у объектов Range и Selection много общего, методы удаления фрагментов текста у них одноименные:
  W.ActiveDocument.Range(1,20).Delete; 
  W.ActiveDocument.Range(1,20).Cut;

    При создании документов не обойтись и без методов, позволяющих вставлять текст. На 47 шаге были рассмотрены два метода объекта Range - InsertAfter и InsertBefore. Эти методы есть и у объекта Selection. Дополнительно можно рассмотреть метод TypeText, позволяющий вставлять текст начиная с позиции курсора (если нет выделенного текста) или замещать выделенный текст. У этого метода только один аргумент - текстовая строка.

    Вызов этого метода в среде Delphi выглядит так:

procedure TForm1.Button13Click(Sender: TObject);
//Метод TypeText
begin
  W.Selection.TypeText('<- Заменяем выделенный фрагмент данным текстом ->');
end;

    Вставить текст в положение курсора или вместо выделенной области можно и более простым способом. Достаточно записать нужный текст в свойство Text объекта Selection, при этом результат будет таким же, как при выполнении метода TypeText:

procedure TForm1.Button14Click(Sender: TObject);
//Свойство Text
begin
  W.Selection.Text:= '<- Заменяем выделенный фрагмент данным текстом ->';
end;
Результат применения любой из этих двух процедур к выделенному фрагменту текста представлен на рисунке 2.


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

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

    Иногда требуется получить размер выделенной области (фрагмента) в символах или словах, скопировать определенные символы или слова, а также задать или получить параметры шрифта для выделенной области текста. Выделенная область (определяемая объектом Selection), как и область текста (определяемая объектом Range), обладает аналогичными одноименными свойствами. Коллекция Characters, входящая в объект Selection, позволяет работать с отдельными символами области, в частности получить ее размер. Коллекция Words объекта Selection содержит отдельные слова области и определяет ее размер в словах. Объект Font, принадлежащий выделенной области, определяет или задает для нее параметры шрифта.

    Еще один полезный параметр объекта Selection - Style типа Integer, содержащий информацию о стиле выделенного текста. Если ему присвоить какое-либо значение из допустимых (существует около сотни стилей), то выделенный текст будет отображен в соответствующем стиле. Можно разработать и использовать свой стиль.


    Разберем следующий пример: выделим текст и выполним оператор W.Selection.Style:=WdStyleHyperlinkFollowed; (значение константы WdStyleHyperlinkFollowed = -87). Выполнение данного оператора установит стиль текста, который представлен на рисунке 3.


Рис.3. Изменение стиля выделенного текста

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

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




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