08:20 Работа с сервером Word. Часть 1 | |
Любой сервер СОМ — это объект, имеющий множество свойств, методов, и реагирующий на какие-то события. В этом отношении он ничем не отличается от любого объекта Delphi. Многие из свойств сервера СОМ в свою очередь являются объектами со своими методами и свойствами. Обращение к свойствам объекта класса TWordApplication, инкапсулирующего объект Application (этот объект является самим выполняющимся экземпляром Word), производится так же, как к свойствам любого объекта Delphi. Например, в Application имеется свойство Options — опции, являющееся в свою очередь объектом со множеством свойств. Среди этих свойств есть CheckSpellingAsYouType и CheckGrammarAsYouType — булевы свойства, указывающие, должен ли Word автоматически проверять синтаксис и грамматику и отмечать в тексте ошибки. Такая проверка замедляет работу Word. Если вы хотите отключить в сервере эти автоматические проверки, введите в приложение операторы: WordApplicationl.Options.CheckSpellingAsYouType := false; WordApplicationl.Options.CheckGrammarAsYouType := false; Тем самым вы отключите автоматические проверки, тем более, что в случае, если Word невидим и работает "за кадром", эти проверки совершенно бессмысленны. Среди множества свойств Application следует отметить свойство ActiveDocument — активный документ. Это объект Document, некоторые свойства и методы которого будут описаны ниже. Практически всегда при работе с сервером Word вам приходится иметь дело со свойством Documents. Это свойство представляет собой собрание всех документов, открытых в Word в данный момент. Каждый документ представлен в этом собрании как объект Document класса TWordDocument, имеющий в свою очередь собственные свойства и методы. Documents — это объект (точнее, интерфейс), имеющий ряд свойств и методов. Общее число открытых документов определяется его свойством только для чтения Count. Оно позволяет проверить, есть ли в Word хотя бы один открытый документ: if WordApplicationl.Documents.Count = О Метод Close закрывает все открытые в Word документы: procedure Close (var SaveChanges: OleVariant; Необязательный параметр SaveChanges определяет варианты действий по сохранению изменений закрываемых документов: wdDoNotSaveChanges — не сохранять (принято по умолчанию), wdPromptToSaveChanges — открыть диалог с предложением сохранить документ, wdSaveChanges — сохранить изменения. Необязательный параметр OriginalFormat определяет формат сохранения документов: wdOriginalDocumentFormat — в первоначальном формате документа, wdPromptUser — предложить пользователю выбор формата, wdWordDocument — в формате документа Word. Необязательный параметр RouteDocument определяет отправку документа следующему получателю. Если присоединенные объекты отсутствуют, параметр игнорируется. Например, оператор WordApplicationl.Documents.Close(EmptyParam, EmptyParam, EmptyParam);закрывает все документы, открытые в Word. Все параметры в вызове заданы равными EmptyParam, что, как говорилось в статье "Где найти свойства и методы серверов, и как задавать их параметры", означает согласие со значениями по умолчанию. Этот оператор приведен для сервера СОМ. Но напоминаю, что, как сказано в статье "Подключение в приложение и активизация серверов автоматизации OLE", в серверах автоматизации перечислять необязательные параметры не требуется. Так что аналогичный оператор для сервера OLE будет выглядеть так: WordApplicationl.Documents.Close; Свойство Item: function Item(var Index: OleVariant): WordDocument;обеспечивает индексированный доступ к указанному документу в коллекции. При этом индекс 1 относится к последнему присоединенному к коллекции документу. Например, следующий код закрывает все открытые документы, кроме одного, открытого раньше всех: var i: integer; В этом коде метод Close, аналогичный описанному выше, применяется поочередно к каждому документу. Обратите внимание, что индекс закрываемого документа все время равен 1. Дело в том, что после удаления документа, открытого последним (индекс 1), индекс 1 начинает относиться к предыдущему документу. Для сервера OLE код будет короче, так как не требуется приводить каждый параметр к типу OleVariant, не надо перечислять параметры по умолчанию, и можно задавать параметры в формате "имя := значение": var i: integer; | |
|
Всего комментариев: 0 | |