In the beginning was the Word, and the Word was 1.0.
Автоматизація дозволяє одному з додатком управляти іншим додатком. Кероване додаток називається сервером автоматизації (в нашому випадку Word). Додаток, що управляє сервером називається диспетчером автоматизації.
Є два шляхи для отримання доступу до серверів автоматизації:
Пізніше зв'язування (Інтерфейс IDispatch)
При використанні даного методу імена функцій і типи параметрів вирішуються під час виконання програми, всі параметри визначені варіантним типом.
Оскільки під час компіляції неможливо визначити відповідності імен функцій і типів параметрів, даний метод може призвести до помилок.
Так як імена функцій і типи параметрів повинні перевірятися під час виконання програми, даний метод виконується повільно.
Єдина перевага даного методу при програмуванні в Delphi полягає в тому, що відпадає необхідність передачі всіх параметрів, що викликається.
Раннє зв'язування (Використання бібліотеки типів / інтерфейсів)
При використанні даного методу імена функцій і типи параметрів повністю вирішуються під час компіляції.
Бібліотека типів повинна імпортуватися в Delphi. Бібліотека типів є мовним нейтральним описом всіх об'єктів і функцій, підтримуваних сервером. (Це подібно файлу заголовка мови C).
При виконанні функції повинні бути обов'язково присутніми всі параметри, навіть ті, які в документації вказані як додаткові (необов'язкові). Це дозволяє виявити і виправити безліч помилок ще до запуску програми.
Швидкість виконання значно швидше, ніж при використанні пізнього зв'язування.
Через переваг другого методу інша частина документа демонструє принципи створення додатків з раннім зв'язуванням. Всі функції, які залежать Excel автоматизацію, повинні користуватися останнім методом, якщо немає причин для першого.
Підготовка бібліотеки типів.
Модуль Pascal повинен бути створений на основі файлу бібліотеки типів.
- Виберіть пункт меню Project | Import Type Library
- Натисніть кнопку Add і виберіть наступний файл
- c: \ program files \ microsoft office \ office \ msword8.olb
- Натисніть OK.
На жаль, даний модуль з проектом явно не компілюється, хоча і включається в нього, ймовірно через те, що додаток вважає даний модуль щось на зразок текстового додатка.
Найбільш простий шлях полягає в наступному: видаліть модуль excel_tlb з проекту і тільки після цього додайте його в список використовуваних модулів.
Довідковий файл c: \ program files \ microsoft office \ office \ vbawrd8.hlp містить інформацію про доступні об'єкти Word.
"Записувача" макросів дозволяє швидко створювати VBA-код. Після цього він досить може легко бути портовано в Delphi.
Наступний приклад використовує клас-оболонку Delphi, що інкапсулює прямі виклики об'єктів Word. Ось перевага цього методу:
- Забезпечення приховування параметрів. Можливість використання для багатьох методів параметрів за замовчуванням. Багато методи Word також працюють з варіантних параметрами. Це означає неможливість використання констант - приховування параметрів вирішує дану проблему.
- Забезпечення перевірки типу. Багато методи визначені з параметрами OLEVariant, забезпечуючи зовнішню сумісність.
- Наступний клас-оболонка демонструє ключові методи автоматизації Word. Повністю клас наведено в Додатку 1.
Щоб створити клас:
Додайте модуль бібліотеки типів в список використовуваних модулів.