Delphi world - delphi і ole automation з word

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.

Щоб створити клас:

Додайте модуль бібліотеки типів в список використовуваних модулів.

Схожі статті