Вставка текста и объектов в документ и форматирование текста
Для создания абзацев в документе можно использовать коллекцию Paragraphs объекта Document, представляющую набор абзацев данного документа. Добавить новый абзац можно с помощью метода Add этой коллекции:
App.ActiveDocument.Paragraphs.Add;Для вставки собственно текста в документ, тем не менее, применяется не объект Paragraph, а объект Range, представляющий любую непрерывную часть документа (в том числе и вновь созданный абзац). Этот объект может быть создан разными способами. Например, можно указать начальный и конечный символы диапазона (если таковые имеются в документе):
var Rng : Variant;... Rng := App.ActiveDocument.Range(2,4);//со 2-го по 4-й символыили указать номер абзаца (например, только что созданного):
Rng:= App.ActiveDocument.Paragraphs.Item(1).Range;или указать несколько абзацев, следующих подряд:
Rng := App.ActiveDocument.Range _ (App.ActiveDocument.Paragraphs.Item(3).Range.Start,_ App.ActiveDocument.Paragraphs.Item(5).Range.End)Вставить текст можно с помощью методов объекта Range InsertBefore (перед диапазоном) или InsertAfter (после диапазона), например:
Помимо объекта Range текст можно вставлять с помощью объекта Selection, являющийся свойством объекта Word.Application и представляющий собой выделенную часть документа (этот объект создается, если пользователь выделяет часть документа с помощью мыши, и может быть также создан с помощью приложения-контроллера). Сам объект Selection можно создать, применив метод Select к объекту Range, например:
var Sel : Variant;...App.ActiveDocument.Paragraphs.Item(3).Range.Select;В приведенном выше примере в текущем документе выделяется третий абзац.
Если мы хотим вставить строку текста в документ либо вместо выделенного фрагмента текста, либо перед ним, это можно сделать с помощью следующего фрагмента кода:
var Sel : Variant;... Sel := App.Selection; Sel.TypeText('Это текст, которым мы заменим _ выделенный фрагмент');Отметим, что если свойство Options.ReplaceSelection объекта Word.Application равно True, выделенный текст будет заменен на новый текст (этот режим действует по умолчанию); если же нужно, чтобы текст был вставлен перед выделенным фрагментом, а не вместо него, следует установить это свойство равным False:
App.Options.ReplaceSelection := False;Символ конца абзаца при использовании объекта Selection может быть вставлен с помощью следующего фрагмента кода:
Sel.TypeParagraph;К объекту Selection, так же как и к объекту Range, можно применить методы InsertBefore и InsertAfter. В этом случае, в отличие от предыдущего, вставляемый текст станет частью выделенного фрагмента текста.
С помощью объекта Selection, используя его свойство Font и свойства объекта Font, такие как Bold, Italic, Size,:, можно отформатировать текст. Например, таким образом можно вставить строку, выделенную жирным шрифтом:
Sel.Font.Bold := True;Sel.TypeText('Это текст, который мы выделим _ жирным шрифтом.');Sel.Font.Bold := False;Sel.TypeParagraph;Для наложения на вставляемый текст определенного заранее стиля можно использовать свойство Style этого же объекта, например:
Sel.Style := 'Heading 1';Sel.TypeText('Это текст, который станет _ заголовком');Sel.TypeParagraph;Нередко документы Word содержат данные других приложений. Простейший способ вставить такие данные в документ - использовать метод Paste объекта Range:
Var Rng : Variant;... Rng := App.Selection.Range; Rng.Collapse(wdCollapseEnd); Rng.Paste;Естественно, в этом случае в буфере обмена уже должны содержаться вставляемые данные.
Если нужно поместить в буфер обмена часть документа Word, это можно сделать с помощью метода Copy объекта Range:
Var Rng : Variant;... Rng := App.Selection.Range; Rng.Copy;