![]() |
Модераторы: MetalFan |
![]() ![]() ![]() |
|
Poseidon |
|
||||||||||||||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: нет Всего: 133 |
У многих людей приходящих сюда часто возникают вопросы по работе с этой компанентой, да и вообще с сервером Word. В принципе основы можно посмотреть в DRKB и FAQ, но даже не смотря на это у людей всё равно много вопросов. Поэтому я решил, поподробней рассмотреть этот компанент и поделиться полученным опытом. Итак начнём....
Немного теории: Работа с компанентой WordApplication, производится как с любым объектом делфи. Кидаем его на форму... В инспекторе объектов ма наблюдаем свойства: ConnectKind - определяет как осуществляется соединение с сервером и может принимать следующие значения: - ckNewInstance - всегда создавать новый экземпляр сервера - ckRunningOrNew - присоединиться к выполняемому серверу или создать новый экземпляр - ckRunningInstance - Только присоединиться к выполняющемуся серверу - ckRemote - Присоединиться к удалённому серверу Сочетается со свойством RemoteMachineName - ckAttachToInterface - не присоединяться к серверу. Вместо этого приложение обеспечивает интерфейс методом ConnectTo AutoConnect - определяет, должен ли запускаться сервер при запуске приложения AutoQuit - обеспечивает автоматическое закрытие Word-а при завершении приложения RemoteMachineName - Удалённый компьютер, накотором выполняется сервер и к которому необходимо присоединиться Среди множества свойств стоит обратить внимание на свойство ActiveDocument - активный документ. Это объект Document. Также к документу можно обращаться через свойство Documents, представляющий из себя массив открытых на данный момент документов (Document). Соответственно у этого свойства есть свойство Count показывающая общее количество открытых документов. Своиство только для чтения и используется для проверки, есть ли хоть один открытый документ. Создание нового документа осуществляется методом Add:
Param1 - указывает шаблон, который оспользуется при создании документа, если параметр по умолчанию (EmptyParam), то используется Обычный(Normal) Param2 - определяет, открывается документ как шаблон или как обычный документ, и имеет булевый тип. При значении (по умолчанию) False открывается как обычный документ . Param3 - тип документа, и может принимать следующие значения: wdNewBlankDocument - новый пустой документ, wdNewEMailMessage - Новое электронное сообщение, wdNewFrameset - новый фрейм, wdNewWebPage - Новая Веб страница. По умолчанию (EmptyParam) используется wdNewBlankDocument. Param4 - определяет открывается ли документ в видимом окне или нет. По умолчанию равен True - в видимом. Сделать видимым или невидимым документ, можно в любом месте программы с помощью свойства WordApplication - Visible:
Причём, четыре параметра имеются в Word от версии 2000, версии ниже имеют только первых два параметра, т.е. для Word97 нам надо писать:
для того, чтоб сделать приложение работающее под любую версию Word-а, необходимо учитывать такие отличия, и соответственно в программе проверять версию установленного Word-а. Это можно сделать с помощью свойства Version и будет выглядить приблизительно так:
чучуть поясню... свойство Version имеет строковый тип, и к примеру для Word97 вернёт "8.0", 2000 - "9.0", 2002 - "10.0"... Также важным свойством WordApplication является свойство Selection - указывающий на позицию курсора или выделенный фрагмент текста в активном документе. Для вставки текста имеются методы InsertAfter и InsertBefore. Первый вставляет текст после объекта Selection, второй - перед ним.
символ #13 переведёт курсор на новую строку и означает конец абзаца. Стоит отметить, что данные функции имеют ограничение на размер передаваемой строки, которая не должна превышать 255 символов. Выделенный текст мы можем отформатировать. Для этого у Selection есть ряд свойств. К примеру Font и ParagraphFormat. В Delphi, для удобства работы предусмотрены на той же вкладке (Servers) компаненты WordParagraphFormat и WordFont1. Для подключения этих объектов к соотвествующему объекту будем использовать метод ConnectTo:
Примеры работы с этими объектами размещу ниже... Для вставки текста имеется ещё один очень интересный метод TypeText. Но его работа немного отличается от ранее описанного. И зависит от свейства ReplaceSelection, принадлежащее свойству Options. Если RepleceSelection:= true, то выделение заменяется на указанный текст, если false, то новый текст вставляется перед выделением:
в результате выполнения кода выделенный текст заменится на слово "ОТЧЁТ". для вставки из буффера обмена у Selection есть метод Paste, который так же зависит от ReplaceSelection. Хочу отметить ещё одно важный метод Selection - Collapse - данный метод свертывает выделение, передаваемый в него аргумент определяет позицию курсора после свёртывания. Аргумент может принимать значения wdCollapseEnd и wdCollapseStart, помещение курсора в конец или в начало выделения соответственно. По умолчанию (EmptyParam) равен wdCollapseStart. Как и в сервере Excel здесь мы можем встретить объекты Range - соответствует какому-то непрерывному участку текста.
после выполнения этого кода объект Rang будет соответствовать первым 15 символам текста. По свойствам данные объекты схожи со свойствами Selection. Нашёл в одной книжке описание ещё одного свойства сервера Word - это Dialogs. Сам его ещё не опробовал, но всё же опишу. Итак, Dialogs - массив (собрание) объектов Dialog, которые соответствуют встроенным диалогам Word. Доступ к ним осуществляется так:
константа wordDialog может принимать следующие ванианты: wdDialogEditFind - найти фрагмент текста wdDialogEditPasteSpecial - Специальная вставка из буфера обмена wdDialogEditReplace - Заменить фрагмент текста wdDialogFileFind - Найти файл wdDialogFileNew - Новый файл wdDialogFileOpen - открыть файл wdDialogFilePageSetup - Параметры страницы wdDialogFilePrint - Печать файла wdDialogFilePrintSetup - Установить принтер wdDialogFileSaveAs - Сохранить файл как wdDialogFileSummaryInfo - Свойства документа (Статистика) wdDialogFormatFont - Шрифт wdDialogFormatParagraph - Абзац wdDialogInsertDatabase - Вставить БД wdDialogInsertFile - Вставить файл wdDialogInsertPageNumbers - Вставить номера страниц у Dialog есть метод Show, открывающий пользователю диалог. В метод передается не обязательный аргумент TimeOut - время в миллисекундах, после которого диалог автоматически закроется, если передать значение по умолчанию (EmptyParam), то диалог будет закрываться только пользователем. Причём перед показом диалога желательно, чтоб сервер был видимым(если ещё невидимый), иначе он станет видимым автоматически, но появится без главного меню и инструментальных панелёй. Что не есть хорошо. Кроме того метод Show возвращает целое число, определяющее какой кнопкой закрыт диалог. Но здесь есть подводный камень, можно сказать один из недостатков этого метода, - Возращаемые числа для разных диалогов не одинаковы. К примеру если один возвращает: -2 : Кнопка закрыть -1 : Кнопка Ок 0 : Кнопка Отмена или Esc >0 : Командные кнопки , то диалог открытия файла: 0 : Кнопки закрыть, отмена, Esc -1 : Кнопка Открыть Автор: Albinos_x Источник: Vingrad -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||||||||||||||
|
|||||||||||||||||||
![]() ![]() ![]() |
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |