Примеры работы с MS Word.
После прочтения данной статьи могло показаться, что самый лучший метод работы с MS Word это использование компонентов закладки Servers, однако эти представления не совсем верны. Рассмотрим положительные и отрицательные стороны различных способов взаимодействия с MS Word:
Позднее связывание
|
«+»
|
«-»
|
1). Вам не нужно знать какие типы использует объектная модель сервера;
2). Для работы достаточно подключения модуля comobj
|
1) Компилятор ничего не знает о свойствах и методах сервера автоматизации, поэтому попытка вызова несуществующего метода или обращения к несуществующему свойству приведет к ошибке на этапе выполнения.
|
Раннее связывание
|
«+»
|
«-»
|
1). Является инструментом для изучения взаимодействия с приложениями, для которых нет стандартных компонентов в Delphi 7.
2). Правильность обращения к методам и свойствам объектов контролируется на этапе компиляции.
|
1). Необходима библиотека типов приложения.
|
Раннее связывание (через компоненты)
|
«+»
|
«-»
|
1). Удобный интерфейс подключения к серверу автоматизации.
2). Правильность обращения к методам и свойствам объектов контролируется на этапе компиляции.
|
1). Применение ограничено существующим набором компонентов.
|
Пример 1.
Будет создан новый документ, а в его начало добавлены 2 строки, которые не выделяются.
… … …
WordApplication1.Connect;
WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.Visible:=true;
WordApplication1.Selection.TypeText('Пример работы с'+#13);
WordApplication1.Selection.TypeText('методом TypeText'+#13);
… … …
Пример 2.
Доступ к первому абзацу документа можно получить так
… … …
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
P:=WordDocument1.Paragraphs.Item(1);
… … …
где p: paragraph;
Пример 3.
Показывает различные способы выполнения одного и того же действия
При работе с объектами OLE – сервера можно использовать тип OleVariant. Это очень удобно так как позволяет не задумываться над типами объектов (их модно попросту не знать!).
… … …
var R, S, E: OleVariant;
… … …
S:=0;
E:=100;
R:=WordDocument.Range(S, E);
R.InsertAfter(‘new text’);
… … …
Однако использование переменных типа OleVariant не позволяет проверять компилятору корректность обращений к свойствам и методам объектов. Поэтому рекомендуется использовать действительные типы объектов:
… … …
var S, E: OleVariant;
R: Range;
… … …
S:=0;
E:=100;
R:=WordDocument.Range(S, E);
R.InsertAfter(‘new text’);
… … …
Можно и не разбивать обращение к методу объекта на части (не использовать переменную R). В некоторых случаях это оправдано (для лаконичности кода), но в большинстве случаев приводит к появлению очень длинных строк, что снижает читабельность программы.
… … …
WordDocument.Range(S, E). InsertAfter(‘new text’);
… … …
Пример 4. Переносит данные из таблицы StringGrid в таблицу Word.
Do'stlaringiz bilan baham: |