Форум visio.getbb.ru |
О форумах
Библиотека | Частые вопросы | Литература | Склад материалов Полезные ссылки | О сайте История Visio | Продукты Visio |
Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
Создание Addon-ов в Borland Delphi 6 для Microsoft Visio 2003Бучацкий И.В. Пожалуй, начну свою статью с задачи, которая подвигла меня, во-первых, написать Addon для Visio, а во-вторых, как следствие, поделиться накопленным опытом. Очень часто можно увидеть вопросы на форуме, касающиеся написания Addon-ов на Дельфи, но пока ответов не было. Этот пробел автор статьи и решил восполнить. Задача, которая стояла передо мной, была довольно необычна. Имелся шейп, символизирующий в определенных ситуациях таблицу базы данных. Поэтому необходимо было дать пользователю инструмент, позволяющий ему определить основные характеристики этой таблицы: имя таблицы, описание, поля таблицы, типы полей и т.п. Решить поставленную задачу тривиальными способами не представлялось возможным. Конечно, существует в составе Visio встроенный язык VBA (Visual Basic for application), но его возможности достаточно ограничены, например, в части доступных визуальных компонентов. Поэтому было принято решение искать другие пути. В результате не слишком продолжительных изысканий оно было найдено. Суть его заключалась в написании с помощью Delphi 6 программы-редактора таблицы базы данных и использования его Visio в качестве Addon-а. Теперь несколько слов об Addon-ах. Информации по этой теме не так много, в основном в справочном руководстве. Addon – написанное пользователем, т.е. нами с вами, приложение. Соответственно, Addon-ы бывают двух типов:
Главное отличие Addon-ов в виде “.vsl” файла по сравнению с другим типом, состоит в том, что библиотека подгружается внутрь процесса Visio и работает как его составная часть, что сказывается, в первую очередь, на скорости работы. В случае же обычного приложения, Addon работает как отдельная программа с вытекающими из этого недостатками: более низкая скорость работы, дополнительный расход памяти. Addon-ы первого типа, следуя справочному руководству, пишутся на языке С++, второго же типа на любом языке программирования, поддерживающим серверы автоматизации, в частности Delphi6. В этой статье описано создание Addon-а в виде exe-файла с помощью Borland Delphi 6. Процесс создания Addon-а можно разделить на три независимых этапа:
Пример, который идет со статьей содержит следующие файлы:
Чтобы запустить Addon надо: во-первых, подключить Addon (о способах подключения см. ниже); во-вторых, создать новый документ, подключить к нему трафарет “DSample.vss” : File => Shapes => Open Stencils; в-третьих, перетащить Object с открытого трафарета на лист; и наконец, щелкнуть правой клавишей мыши на шейпе и выбрать в контекстном меню “Редактор таблицы БД”. Рис 1. Окно программы DBEdit (Addon) Написание Addon-а на Delphi 6. Эта среда разработки была выбрана по двум объективным причинам: поддержка серверов автоматизации и хорошее знание автора данного языка программирования. Написать Addon на другом языке будет ничуть не сложнее. К статье прилагается полностью рабочий пример Addon-а с исходными текстами с комментариями. Дальше в статье лишь кратко будут объяснены ключевые моменты.
Строка-индификатор приложения Visio.
Переменные типа Variant, с помощью которого можно вызывать методы сервера (Visio) напрямую за счет поддержки интерфейса IDispatch..
В этом блоке программа получает глобальный идентификатор интерфейса Visio, а потом пытается подключиться к серверу автоматизации. Если Visio запущен, то подключается к работающей версии. После этого получает ссылку на активный шейп.
При закрытии Addon-а надо обязательно обнулить ссылку с сервером автоматизации !
Получаем строку с данными из активного шейпа.
Соотвественно, после редактирования записываем обратно сформированную строку с данными в активный шейп. Подключение Addon-а к Visio. Способов, подключить Addon в Visio несколько. Первый, наименее трудоемкий, заключается в том, что в настройках Visio надо указать папку, в которой лежит разработанный Addon. Делается это через главное меню: Visio => Tools => Options => Advanced => File Paths => Addons. Второй способ, программный, состоит в том, чтобы добавить путь к своему Addon-у в коллекцию Addon-ов объекта Application, т.е. Visio. Пример второго способа подключения Addon-а есть в Microsoft Office Visio SDK 2003. Запуск Addon-а из Visio. Запустить подключенный Addon можно тоже несколькими способами. Все они прекрасно описаны в Microsoft Office Visio SDK 2003. Самый простой способ реализуется через главное меню: Tools => Addons => выбираем наш Addon. Для программного запуска Addon можно воспользоваться двумя функциями: RUNADDON и RUNADDONWARGS. Первая просто запускает Addon с указанным в скобках именем. Вторая же позволяет запустить Addon и передать ему какую-либо информацию в виде параметров командной строки. В прилагаемом примере используется функция RUNADDON. Описана она в Row_2 секции Actions шейпа (см. ShapeSheet) следующим образом:
В качестве единственного аргумента функции указано имя Addon-а. И последний важный момент. В качестве места, в котором можно хранить данные шейпа, т.е. данные таблицы выбран новый ряд в секции User-difined cells DBData. Это легко можно проверить следующим способом. Отредактировать с помощью Addon-а объект, а после с помощью DBData посмотреть значение ячейки User.DBData. Все данные помещаются туда в отформатированном виде. Все исходные материалы обсуждаемого примера можно взять для подробного рассмотрения в rar-архиве. Объем архива 471 Кб. |