(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

ActiveX компоненты в Centura Team Developer: принципы и технология применения

С. А. Большаков

Оглавление

Введение

Технологии программирования постоянно развиваются и совершенствуются. Несомненным достижением в этом направлении является широкое распространение взаимосвязанных друг с другом СОМ и ActiveX технологий. Поэтому неудивительно, что все крупные создатели средств разработки информационных систем прилагают значительные усилия для того, чтобы идти в ногу со временем и интегрировать новшества. Этим объясняется включение в Centura Team Developer 2000 механизмов поддержки СОМ и ActiveX (оно состоялось, если точно, еще в предыдущей версии). Необходимо отметить, что и в этом случае, по хорошей традиции, решения Centura ориентированы на пользователя: достаточно сложные проблемы могут быть решены просто, но, при необходимости, сохраняется возможность и перейти на нижний уровень для "дотошного" ручного программирования. Я такой подход называю "золотой серединой".

Технологии СОМ (Component Object Model) и механизмы ее адаптации в приложениях ActiveX обеспечивают два основных преимущества: обеспечение высокой степени использования типовых программных решений и внедрение возможностей распределенной обработки данных. Несомненно, можно найти много других достоинств, но об этом речь пойдет в другой статье ("COM технологии в CTD - просто и доступно каждому программисту " того же автора). Первое выделенное свойство позволяет рассматривать программные компоненты, как независимые "черные ящики" интегрируемые в операционную среду. За счет унифицированного стандарта интерфейса методы включенных объектов становятся доступными в приложениях самого различного применения. Распределенная обработка обеспечивает работу на разных вычислительных средствах, разных платформах технических средств, в различных сетях, включая и Интернет. Интеграции вычислительных ресурсов, а, в конечном счете, и интеллектуальных (программы разрабатывают все), несомненно, обеспечит развитие информационных технологий еще более высокими темпами.

Общие понятия AX и COM

В очень упрощенном варианте включаемые компоненты (СОМ) могут рассматриваться как библиотеки взаимосвязанных процедур, которые используют унифицированный интерфейс. Более точно, следует говорить об объектах, которые создаются в клиентских приложениях на основе общих шаблонов, поведение которых определяется правилами, заложенными в логике СОМ сервера. В этом случае изменение правил поведения в рамках сервера не приводит к значительным изменениям в клиентских приложениях, причем в максимальном случае достаточно выполнить перегенерацию этих приложений, а в минимальном случае вообще ничего не надо предпринимать. Для клиентской части обычно автоматически порождаются заголовочные файлы, описания библиотек функций и классов, которые, по сути дела, и представляют собой AX описания. В зависимости от средств разработки и свойств включаемых объектов подобные описания могут быть представлены в виде: библиотек типов - *.TLB(type library), динамических библиотек - *.DLL, объектов управления - *.OCX, исполнимых модулей - *.EXE или заголовочных файлов библиотек ( для CTD - *.APL). CTD для своей работы использует любые из видов библиотек описаний, на основе которых генерируется интерфейсные APL, которые и подключается в приложение. Подключение АХ в CTD объектов автоматизировано, для чего используется специальная встроенная утилита - AX Explorer, возможности которой мы рассмотрим ниже. Таким образом, главной составляющей создаваемых и подключаемых объектов является интерфейс (Interface), который с позиции объекта может быть: входящим (Incoming), служащим для отработки методов и функций внутри объекта и исходящим (Outgoing), служащим для отклика на события в объекте со стороны клиентских приложений.

Для унификация доступа к классам и объектам предусматриваются специальные глобальные уникальные идентификаторы (GUID), которые позволяют обратиться к нужному объекту даже в таких глобальных сетях, как Интернет. GUID задаются для: классов (CLSID); для интерфейса (IID); для диспетчирования методов-функций и событий. Последние два идентификатора локализованы внутри сервера объектов. Глобальные идентификаторы объектов регистрируются в реестре операционной системы, что дает возможность клиентским приложениям получать доступ к нужному серверу.

Proxies и stubs

Для взаимодействия клиента и сервера используются общие библиотеки, которые должны быть доступны и клиенту и серверу (СОМ libs), специальные классы и объекты Proxy для клиента и Stub для сервера. Эти специальные объекты обеспечивают упаковку и распаковку интерфейсной информации в/из передаваемых по сети сообщений. Обмен информацией в виде сообщений поддерживается протоколами RPC (Remote Procedure Call). На рисунке, расположенном ниже приведена упрощенная схема такого взаимодействия.

Рис. 1 Взаимодействие клиента и сервера.

Механизмы RPC используются, когда клиенты работают на одном компьютере, и когда они расположены на удаленных компьютерах.

Подключение AX в приложения CTD

Возможны три вида АХ объектов, подключаемых в приложения разрабатываемых в среде CTD:

  • Подключение как объекта управления (controls) - данные объекты обладают всеми составляющими: атрибутами-свойствами, функциями-методами и событиями, которые может обрабатывать приложение (пример - Calendar Control).
  • Подключение объекта, обрабатываемого другими программами (insertable)- данные объекты поддерживают и функции и события, однако эти объекты не являются визуальными, и поэтому не относятся к объектам управления. Обычно они соответствуют СОМ серверам (пример - MS WORD).
  • Подключение объекта с помощью контейнера (contained) - подключаемые через объект АХ контейнеры, взаимодействие с которыми выполняется в самом приложении. Такой механизм соответствует встроенным OLE объектам (пример - документ WORD в окне приложения).

Для визуального подключения АХ в приложения используется специальное окно, в котором необходимо нажать специальную кнопку (красный Х) и выбрать в списке нужный объект или элемент управления. После такого подключения, если объекты подключены в CTD в программу будут автоматически добавлены интерфейсные APL. На рисунке ниже панель объектов показана в состоянии выбора АХ объектов

Рис. 2 Окно выбора АХ controls и АХ объектов.

С помощью окна controls можно добавлять объекты управляющего типа и встраиваемые объекты. Кроме использования палитры объектов для подключения объектов можно использовать пункты меню, контекстное меню, ассистент кодирования и AX Explorer, который также берет на себя функции первоначального подключения АХ классов и компонент.

Возможности CTD по настройке и управлению AX

После подключения объектов в программу они становятся полноправными элементами приложения. Настройка основных параметров (размер, положение, рамки и т.д.) выполняется обычным способом, как и у стандартных объектов, посредством инспектора атрибутов. Специальные параметры настраиваются с помощью специальных окон свойств, которые встроены в АХ компоненты. Например, для компоненты Calendar Control вызывается окно настройки, представленное ниже на рисунке. Оно представляет собой совокупность закладок для настройки шрифта, цвета, способа вывода управляющего объекта на экран и т.д.

При добавлении объекта в приложения доступными становятся также: встроенные классы, новые типы сообщений, обрабатываемые приложением (message action), функции выполняемые с данным объектом (UDF- user define function) и многое другое.

Рис. 3 Пример окна настройки свойств объекта.

Использование AX Explorer

Подключение новых ActiveX объектов в среду CTD выполняется с помощью встроенной утилиты AX Explorer. Он может выполнять следующие функции: импорта интерфейсов и генерации классов в виде *.APL, просмотра библиотек объектов и контекстной справки по объектам. Ниже на рисунке представлено окно AX Explorer в режиме просмотра содержания АХ компоненты.

Рис. 4 Окна просмотра классов и свойств АХ компонента.

Данное окно показывает содержание библиотеки Microsoft Word 8.0 Object Library.apl, которая сгенерирована для MS WORD'97. Для управления данным окном предусмотрена специальная панель управления, которая дублируется контекстным меню. В левой части окна дан список классов, доступных для генерации, в правой части дано содержание выделенного класса: методы, свойства и события. В нижней части экрана дано информационное окно, в котором дано описание элементов выделенных в верхней части окна АХ Explorer.

При генерации возможно задавать следующие режимы формирования интерфейсной APL с новыми классами:

  • Stub - генерация классов без функций, для наследования и создания объектов со скрытым поведением.
  • Full - полная генерация и классов и функций и связанных классов
  • Deep - генерируются выбранные классы и те, что непосредственно связанные с выбранными в списке.

После подключения в программу объекты добавляются в дерево приложения и в OUTLINE. Далее они могут редактироваться обычным способом. Пример окна дизайнера CTD с подключенным объектом ax1 - типа AX_MSACAL_Calendar, приведен ниже на рисунке.

Рис. 5 Пример окна CTD с подключенным АХ объектом (ах1).

Рис. 6 Фрагмент окна приложения с подключенным АХ объектом (ах1).

В правой части окна проекта дизайнера CTD показаны объекты в раскрытом виде. В разделе обработки пользовательских сообщений (message action) показан специальный вид сообщений - событий, которые генерирует управляющий элемент "On NewMonth", оно инициируется при изменении месяца с помощью мышки или клавиш. Выше на рисунке приведен фрагмент окна с включенным объектом календаря. Это пример стандартного приложения описанного в документации и входящего в состав стандартных примеров CTD.

Кстати, в правой части окна приложения приведен другой объект, являющимся стандартным для CTD и построенный на основе ее собственного механизма построения объектов управления - QUICK OBJECT.

Основные классы для обеспечения работы AX в CTD

Для обеспечения работы механизмов СОМ и АХ в CTD добавлены специальные классы. Они подключаются при добавлении в программе специального модуля: Automation.apl. При подключении АХ объектов эта библиотека добавляется автоматически. Ниже в левой части окна дизайнера CTD показаны эти классы. На рисунке в правой части показано содержание класса интерфейса, в котором выделим: класс интерфейса наследуется (Derived From) от класса Object и раскрыта сгенерированная функция GetCountUser, в которой показан пример использования интерфейсной функции INVOKE c передачей и возвратом параметров.

Рис. 7 Основные классы для АХ поддержки.

Специальные классы CTD для АХ программирования имеют следующее назначение:

  • OBJECT - этот класс используется как базовый для наследования при создании классов, используемых для АХ и СОМ классов. Такое наследование обеспечивает диспетчирование сообщений и обработку событий объектов.
  • VARIANT - специальный класс предназначенный для создания объектов позволяющих гибко манипулировать типами данных при вызове методов АХ объектов и СОМ серверов. Объекты типа VARIANT могут содержать объекты и данные любого типа.
  • COM Proxy Class - является вспомогательным классом для непосредственного обеспечения интерфейса с объектами, он должен иметь своим родителем класс типа OBJECT. При автоматической генерации он включается в цепочку порождения для включения стандартных функций и обработки событий, передаваемых с сервера.
  • SAFEARRAYS - специальный функциональный класс, для порождения и манипулирования массивами объектов в динамике. Возможно использование массивов одинарной, двойной и любой размерности. Массивы могут работать с любыми типами данных, включая OBJECT и VARIANT.
  • OLEERRORINFO - класс, используемый для пользовательского диспетчирования ошибок, связанных с исключительными ситуациями в АХ объектах.

Дополнительные возможности CTD для поддержки технологии АХ

Для обеспечения механизмов OLE в CTD предусмотрен специальный тип объектов контейнерные АХ - Container controls (insertable objects). Для динамической работы с встраиваемыми объектами предусмотрены специальные функции. Ниже на рисунке приведен пример окна приложения с включенным в контейнер объектом MS WORD.

Рис. 8 Пример окна приложения с включенным объектом Wоrd.

При нажатии кнопки в окне поля переносятся в документ по установленным закладкам в тексте. Обратим внимание на то, что обеспечиваются полные возможности Wоrd, вплоть до проверки орфографии.

Отметим, что в CTD предусмотрена возможность настройки меню и панелей инструментов для включаемых объектов. Новые меню и панели инструментов включаются автоматически при активизации объекта.

Функции для встроенных объектов обеспечивают динамическое манипулирование ими и имеют следующее назначение:

    • SalActiveXAutoErrorMode - устанавливает режим обработки исключений для АХ объектов.
    • SalActiveXGetActiveObject - формирует активный объект в переменную программы.
    • SalActiveXClose - закрывает объект АХ
    • SalActiveXCreate - создает объект АХ
    • SalActiveXCreateFromData - создает объект АХ на основе существующего
    • SalActiveXCreateFromFile - создает объект АХ на основе заданного файла
    • SalActiveXDelete - удаляет объект АХ из контейнера
    • SalActiveXDoVerb - выполняет действия с объектом АХ в соответствии с командами, предусмотренными COM сервером
    • SalActiveXGetData - считывает описание объекта АХ в формате данных
    • SalActiveXGetObject - устанавливает активный объект АХ.
    • SalActiveXInsertObjectDlg - вызывает диалог для поиска и открытия объекта АХ.
    • SalActiveXOLEType - определяет состояние объекта АХ в контейнере.

    CTD поддерживает два механизма обработки исключений при работе с АХ объектами: стандартный способ обработки с использованием единого механизма и окна ошибок и пользовательского способа обработки исключительных ситуаций. В случае пользовательской обработки создаются специальные объекты класса OLEERRORINFO, анализируется коды возврата и анализируется информация, поставляемая в случае ошибки. Если AX построены по стандарту, то указываются коды ошибки, справка по ошибке, идентификаторы выполняемых процедур.

    Заключение

    Конечно, в одной статье трудно описать все особенности и тонкости использования АХ и СОМ технологий, но думаю, что данная статья будут полезна многим программистам и руководителям разработки, для того, чтобы сделать вывод о том, насколько целесообразно использовать данные механизмы в собственных проектах. На мой взгляд, простота реализации АХ и СОМ технологий в CTD подкупает, а областей применения достаточно много. Думаю также, что это станет дополнительным стимулом для знакомства с эффективными средствами разработки Centura Team Developer, сторонников которых становиться все больше у нас и заграницей.



     Распечатать »
     Правила публикации »
      Обсудить материал в конференции Gupta/Centura (Gupta Technologies) »
    Написать редактору 
     Рекомендовать » Дата публикации: 30.07.2001 
     

    Магазин программного обеспечения   WWW.ITSHOP.RU
    GFI LanGuard подписка на 1 год (25-49 лицензий)
    AutoCAD LT 2022 Commercial New Single-user ELD Annual Subscription
    Microsoft Office для дома и учебы 2019 (лицензия ESD)
    Kaspersky Internet Security для всех устройств. 2-Device 1 year Base Download Pack
    DevExpress / ASP.NET Subscription
     
    Другие предложения...
     
    Курсы обучения   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Магазин сертификационных экзаменов   WWW.ITSHOP.RU
     
    Другие предложения...
     
    3D Принтеры | 3D Печать   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Новости по теме
     
    Рассылки Subscribe.ru
    Информационные технологии: CASE, RAD, ERP, OLAP
    Новости ITShop.ru - ПО, книги, документация, курсы обучения
    Программирование на Microsoft Access
    CASE-технологии
    Программирование в AutoCAD
    СУБД Oracle "с нуля"
    Вопросы и ответы по MS SQL Server
     
    Статьи по теме
     
    Новинки каталога Download
     
    Исходники
     
    Документация
     
    Обсуждения в форумах
    Слот Биг Бэнг (6)
    Большой взрыв как правящая теория сотворения мира. Теперь вы можете поиграть слот Big Bang в...
     
    Отличается ли ДрифтКазино от беттинга? (57)
    Друзья, давно заметил, что на Дрифте уже несколько месяцев во всю рекламируется и предлагается...
     
    Подскажите лучшее онлайн казино (8)
    Вот нашёл интересную игровую площадку, и это онлайн казино Вавада. Может кто что подсказать по...
     
    Помощь по MS Access (345)
    Доброе время суток. Случайно оказался на этом сайте, искал статьи по OLAP. Вижу, что...
     
    Требуется Краснодар: Java -разрабочик (2)
    Обязанности: Разработка корпоративных backend-приложений для автоматизации розничных продаж...
     
     
     



        
    rambler's top100 Rambler's Top100