
Кнопки созданной панели показаны на рис. 10.16.
Рис. 10.16. Варианты значков кнопок
Возможно, это самый интересный раздел. Как уже говорилось и было показано на многочисленных примерах, используя среду визуального программирования приложений Delphi, можно без особого труда создать и использовать любой документ приложения Word. Но есть некоторые ограничения, которые порой достаточно трудно обойти. Одним из таких ограничений является невозможность передавать из Delphi в Visual Basic значения, типы которых не поддерживаются для такого взаимодействия. Например, в документе требуется создать объект — ломаную линию. Для создания такого объекта приходится заполнять массив данных для точек изломов этой линии, затем вызывать метод, аргументом которого является этот массив. При создании контроллера автоматизации мы не можем использовать вызов из Delphi функций Visual Basic, аргументами которых являются массивы. Как быть в таком случае или в других случаях, когда ситуация кажется безвыходной? Решением может быть создание макроса средствами Delphi с использованием объектов Visual Basic и выполнение этого макроса, а затем его удаление после выполнения задачи.

В первом операторе этой процедуры мы создаем и получаем доступ к программному модулю, в который сможем записать текст создаваемого макроса. Далее в строковую переменную записываем текст создаваемого макроса, учитывая стиль написания операторов Visual Basic. Оператор
Рассмотрим еще один тип элементов управления в приложении Word — элементы, собранные в коллекцию Dialogs. У этой коллекции не очень много свойств. Нас интересуют два из них — количество элементов коллекции (свойство Count) и набор элементов коллекции Item(i:integer), где i — индекс диалога (диалогового окна) в коллекции. Чтобы ознакомиться со всем списком и значениями индексов и аргументов диалогов, достаточно обратиться к нужной странице справочной системы Word. Здесь мы рассмотрим только общие принципы вызова диалогов Word из программ, разработанных в среде Delphi, и несколько примеров использования диалогов. У каждого диалога есть методы и свойства. Есть общие свойства диалогов и свойства, присущие каждому отдельному диалогу. Например: свойство type:integer — тип диалога (это свойство совпадает с индексом диалога в коллекции и есть у каждого диалога); свойство Name:string — принадлежит диалогу, тип которого определяется константой wdDialogFileSaveAs, и не может принадлежать диалогу типа wdDialogConnect. Это нетрудно проверить — достаточно попытаться использовать свойство Name для диалога второго типа — сразу возникнет ошибка выполнения. Для каждого диалога есть четыре метода, предназначенных для запуска или отображения диалогового окна. Рассмотрим их.

Метод Show отображает диалог, выполняет заданные в нем действия и возвращает значение, связанное с нажатием кнопок диалога.
Метод Display отображает диалог, но не выполняет заданные в нем действия и возвращает значение, связанное с нажатием кнопок диалога. Возвращаемые значения: —2 — была нажата кнопка Закрыть; -1 — была нажата кнопка ОК; 0 — была нажата кнопка Пропустить; > 0 — была нажата кнопка 1. 2... диалога.

Результат выполнения данной процедуры представлен на рис. 10.20.
Из уже пройденных материалов нетрудно сделать вывод, что при умелом использовании можно с легкостью превратить приложение Word в инструмент для подготовки различных отчетных форм и использовать это в ваших приложениях, разрабатываемых в среде Pelphi. Положительной особенностью здесь является тот факт, что при переходе от одной версии MS Word к другой не требуется вносить в разрабатываемые приложения какие-либо изменений, потому что новые версии MS Office поддерживают работу функций, используемых в предыдущих версиях. Для практики программирования панели в приложении Word немного изменим рассмотренный ранее пример.