На этом шаге мы закончим изучение методов объекта 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. Результат работы приложения
Порядок нажатия кнопок в приложении.
Возможно, нам придется удалять некоторые фрагменты текста. Это можно сделать несколькими способами. Поскольку мы рассматриваем работу с объектом Selection, то используем для этой цели его метод Delete или Cut:
W.Selection.Delete; W.Selection.Cut;
Отличие этих методов заключается в том, что первый метод удаляет выделенный объект целиком, а второй помещает его в буфер обмена, а только потом удаляет. Второе отличие этих методов определяется их действием на текст, если последний не выделен. В этом случае первый метод удаляет один символ после курсора, а второй просто вызовет ошибку выполнения.
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. Результат работы приложения
Иногда требуется получить размер выделенной области (фрагмента) в символах или словах, скопировать определенные символы или слова, а также задать или получить параметры шрифта для выделенной области текста. Выделенная область (определяемая объектом Selection), как и область текста (определяемая объектом Range), обладает аналогичными одноименными свойствами. Коллекция Characters, входящая в объект Selection, позволяет работать с отдельными символами области, в частности получить ее размер. Коллекция Words объекта Selection содержит отдельные слова области и определяет ее размер в словах. Объект Font, принадлежащий выделенной области, определяет или задает для нее параметры шрифта.
Еще один полезный параметр объекта Selection - Style типа Integer, содержащий информацию о стиле выделенного текста. Если ему присвоить какое-либо значение из допустимых (существует около сотни стилей), то выделенный текст будет отображен в соответствующем стиле. Можно разработать и использовать свой стиль.
Рис.3. Изменение стиля выделенного текста
На следующем шаге мы рассмотрим поиск текста в документе.