Для начала рассмотрим два метода, которые вставляют (записывают) текст.
Метод InsertBefore записывает текст в начало содержимого объекта Range.
Метод InsertAfter записывает текст в конец содержимого объекта Range. He
нужно забывать, что объект Range может содержать как весь документ, так
и его часть, а его методы действуют только на содержимое конкретного
объекта Range. Допустим, объект Range включает в себя весь текст докумен-
та. Тогда метод InsertBefore вставит текст в начале документа, сместив текст,
который уже был в документе. Метод InsertAfter при этом вставит текст в
конце документа. Если объект Range включает только часть текста докумен-
та, то эти методы вставят новый текст в начало или в конец этой части,
сместив текст, который был в документе до их выполнения.
Рассмотрим практическую реализацию вызова этих методов в приложениях
Delphi. В форме разместим кнопки и напишем следующие процедуры:
Запись текста в документ с помощью методов InsertBefore и InsertAfter
procedure TUG5CH22_.ButtonlClick(Sender: TObject);
begin
W.ActiveDocument.Range.InsertAfter(Memol.Text+'('+inttostr(nn)+') ' ) ;
nn:=nn+l;
end;
procedure TUG5CH22_.Button2Click(Sender: TObject);
begin
W.ActiveDocument.Range.InsertBefore(Memol.Text+' ( Ч-inttostr(nn) + ') ' ) ;
nn:=nn+l;
end;
Рис. 5.8. Запись текста в документ (метод InsertAfter)
Пример результата работы метода InsertAfter представлен на рис. 5.8.
На рис. 5.8 видно, что следующий фрагмент записывается правее предыду-
щего, т. е. новый текст добавлен в конец документа.
Пример результата работы метода InsertBefore представлен на рис. 5.9.
В данном случае новый фрагмент текста записывается в начало, смещая
к концу документа текст, уже имевшийся в документе.
Как выделить часть текста в документе и работать с ней, применяя описан-
ные методы не ко всему документу, а к фрагменту? Для этой цели можно
использовать функцию Range, возвращающую объект типа Range; аргумен-
ты функции — позиции начала и конца фрагмента.
В качестве примера рассмотрим небольшой фрагмент программы Delphi.
Запись текста в заданный фрагмент документа
var MyRange:variant;
begin
MyRange:= W.ActiveDocument.Range(100,200);
MyRange.InsertAfter('Вставляем текст в конце заданного фрагмента')
end;
Первый оператор определяет новый объект MyRange типа Range, включаю-
щий в себя данные с позиции 100 до позиции 200 (позиции соответствуют
символам). После этого с новым объектом можно работать так же, как с
базовым объектом, т. е. использовать его для записи текста в определенную
позицию документа. В данном случае объект MyRange можно использовать
для записи и чтения документа с позиции 100 по 200.
Рис. 5.9. Запись текста в документ (метод InsertBefore) |