01
из 07
Что такое (OLE) автоматизация? Что такое сервер автоматизации? Что такое клиент автоматизации?
Предположим, вы разрабатываете HTML-редактор, например HTML Kit. Как и в любом другом текстовом редакторе, ваше приложение должно содержать какую-то систему проверки орфографии. Зачем покупать компоненты для проверки орфографии или писать их с нуля, если вы легко можете использовать MS Word?
OLE Automation
одно приложение может контролировать другое
клиент автоматизации
сервер автоматизации
Автоматизация (также известная как OLE Automation) - это функция, которую программы используют для предоставления своих объектов инструментам разработки, языкам макросов и другим программам, поддерживающим автоматизацию. Например, Microsoft Outlook может предоставлять объекты для отправки и получения электронной почты, для планирования, а также для управления контактами и задачами.
Используя Word Automation (сервер), мы можем использовать Delphi (клиент) для динамического создания нового документа, добавить текст, который мы хотим проверять правописание, и затем Word проверяет правописание. Если мы будем минимизировать Microsoft Word, наши пользователи могут никогда не узнать! Благодаря OLE-интерфейсу Microsoft Word, мы можем немного отойти от Delphi и найти способы обмана при разработке нашей версии редактора Блокнота :)
Есть только один глюк;) Пользователям приложения необходимо установить Word. Но не позволяй этому остановить тебя.
Конечно, чтобы полностью освоить использование автоматизации в ваших приложениях, вы должны иметь подробные рабочие знания о приложениях, которые вы интегрируете - в данном случае MS Word.
Чтобы ваши «офисные» программы работали, пользователь должен владеть приложением, которое действует как сервер автоматизации. В нашем случае MS Word должен быть установлен на компьютере пользователя.
02
из 07
Подключение к Word: «Привет, слово», раннее связывание против Позднее связывание
Есть несколько основных шагов и три основных способа автоматизации Word из Delphi.
Delphi> = 5 - Серверные компоненты Office XX
TWordApplication
TWordDocument
Delphi 3,4 - Раннее связывание
Библиотеки типов
Чтобы использовать библиотеку типов Word в Delphi (версия 3 или 4), выберите Project | Импортируйте библиотеку типов… и выберите файл msword8.olb, расположенный в каталоге «Office» Microsoft Office. Это создаст файл «Word_TLB.pas», который является переводом паскаля объекта библиотеки типов. Включают Word_TLB в списке использований любого модуля, который будет обращаться к свойствам или методам Word. Ссылка на методы Word с использованием библиотеки типов называется раннее связывание.
Delphi 2 - Позднее связывание
Позднее связывание
следует избегать, если это возможно, поскольку использовать библиотеки типов гораздо проще и быстрее - компилятор помогает, отлавливая ошибки в исходном коде. При использовании позднего связывания Word объявляется как переменная типа Variant. Это, в частности, означает, что для вызова методов и доступа к свойствам вы должны знать, что они из себя представляют.
04
из 07
Проект проверки правописания - TWordApplication, TWordDocument
Для создания проекта проверки орфографии нам понадобятся две формы: одна используется для редактирования текста, а другая - для просмотра предложений по написанию... но пойдем с самого начала.
Запустите Delphi. Создайте новый проект с одной пустой формой (по умолчанию form1). Это будет основной формой проверки правописания в проекте MS Word. Добавить одну TMemo (Стандартная вкладка) и два TButtons к форме. Добавьте текст в заметку, заполнив свойство Lines. Конечно, с некоторыми опечатками. Выберите вкладку Серверы и добавьте TWordApplication и TWordDocument к форме. Измените имя компонента TWordApplication с WordApplication1 на WordApp, WordDocument1 на WordDoc.
TWordApplication, TWordDocument
Опубликованная собственность ConnectKind используется для управления подключением к недавно запущенному экземпляру Word или к уже существующему экземпляру. Установите для ConnectKind значение ckRunningInstance.
Когда мы открываем или создаем файл в Word, мы создаем объект Document. Обычная задача при использовании автоматизации Word - указать область в документе, а затем что-то с ней сделать, например вставить текст и проверить орфографию. Объект, представляющий непрерывную область в документе, называется Range.
05
из 07
Проект проверки правописания - Проверка правописания / замена
Идея состоит в том, чтобы пройтись по тексту в заметке и разобрать его в слова, разделенные пробелом. Для каждого слова мы вызываем MS Word для проверки орфографии. Модель автоматизации Word содержит метод SpellingErrors, который позволяет проверять орфографию текста, содержащегося в некотором диапазоне.
Диапазон определен, чтобы содержать только слово, только что проанализированное. Метод SpellingErrors возвращает коллекцию слов с ошибками. Если эта коллекция содержит больше нуля слов, мы идем дальше. Вызов метода GetSpellingSuggestions, передающий неправильно написанное слово, заполняет коллекцию SpellingSuggestions предложенных заменяющих слов.
Мы передаем эту коллекцию в форму SpellCheck. Это вторая форма в нашем проекте.
Чтобы добавить новую форму в проект, используйте Файл | Новая форма. Пусть у него будет имя 'frSpellCheck'. Добавьте три компонента TBitBtn в эту форму. Два EditBox-ов и один ListBox. Обратите внимание на еще три ярлыка. Метка «Нет в словаре» «связана» с полем редактирования edNID. EdNID просто отображает слово с ошибкой. В поле списка lbSuggestions будут перечислены элементы в коллекции SpellingSuggestions. Выбранное предложение правописания помещается в поле редактирования edReplaceWith.
Три кнопки BitButton используются для отмены проверки орфографии, игнорирования текущего слова и для изменения слова с ошибкой на одно слово в поле редактирования edReplaceWith. Свойство ModalResult компонентов BitBtn используется при ссылке на то, что пользователь щелкнул. Для кнопки «Игнорировать» свойство ModalResult имеет значение mrIgnore, «Изменить» на mrOk и «Отмена» на mrAbort.
FrSpellCheck имеет одну строковую переменную Public с именем sReplacedWord. Эта переменная возвращает текст в edReplaceWith, когда пользователь нажимает кнопку «Изменить».
07
из 07
Тезаурус? Тезаурус!
В качестве бонуса у проекта есть код для использования Словарь тезаурус. Использовать тезаурус довольно просто. Мы не разбираем текст, для выбранного слова вызывается метод CheckSynonyms. Этот метод отображает свой собственный диалог выбора. После выбора нового слова содержимое диапазона документов Word используется для замены исходного слова.