ActiveX в Delphi

       

Использование мастера MTS-объекта



Для запуска мастера выполните:
1. Выберите в главном меню пункт File/New (Файл/Новый).
2. В появившемся диалоговом окне выберите вкладку Multitier.
3. Дважды щелкните на пиктограмме MTS Object (рис. 3.34).
В результате выполнения приведенных выше шагов запустится мастер создания MTS-объекта (рис. 3.35).
В поле CoClass Name (Имя со-класса) введите имя для вашего MTS-класса, например MуMTS. В выпадающем списке Threading Model (Модель потока) выберите тип потоковой модели для вашего MTS-объекта (потоковые модели были рассмотрены в предыдущих главах). Далее выберите модель транзакции, установив нужный переключатель Transaction Model (Модель транзакции).


Остановимся на моделях транзакции более подробно. Итак, каждый MTS-объект должен иметь атрибут транзакции, который записывается в MTS- каталог. MTS-каталог, кроме того, содержит информацию о компонентах, пакетах и ролях. Разработчик может управлять MTS-каталогом при помощи MTS -обозревателя.


Рис. 3.34. Создание нового MTS-объекта


Рис. 3.35. Мастер создания MTS-объекта
Имеются четыре значения, которые может принимать атрибут транзакции:
- Requires a transaction (Требует транзакцию). MTS-объект должен выполняться внутри области транзакции. При создании нового MTS-объекта объект наследует транзакцию от клиента. Если клиент не содержит транзакций, MTS автоматически создает транзакцию для MTS-объекта;
- Requires a new transaction (Требует новую транзакцию). MTS-объект должен выполняться внутри собственной транзакции. При создании нового
объекта MTS автоматически создает новую транзакцию для MTS-объекта, независимо от того, имеет ли клиент транзакции. Объект никогда не работает внутри области транзакций клиента. Система всегда создает независимые транзакции для новых объектов;
- Supports transactions (Поддерживает транзакции). MTS-объект может выполняться внутри области транзакций клиента. При создании нового объекта, объект наследует транзакции клиента. Если клиент не имеет транзакций, MTS-объект будет создан также без транзакций;
- Does not support transactions (He поддерживает транзакции). MTS-объект не работает в области транзакций. При создании нового объекта объект создается без транзакций, независимо от того, имеет ли клиент транзакции. Используйте данное значение атрибута транзакций для создания СОМ-объектов, обеспечивающих поддержку MTS.
Опция Generate Event support code (Создавать код поддержки событий) устанавливается, если вы хотите использовать собственный интерфейс для управления событиями вашего MTS-объекта.
После нажатия кнопки ОК в окне мастера создания MTS-объекта к вашему проекту будет добавлен новый модуль, который содержит объявление нового MTS-объекта (листинг 3.13).

Листинг 3.13
uses
ActiveX, MtsObj, Mtx, ComObj, Project2_TLB, StdVcl;
type
TMyMTS = class(TMtsAutoObject, IMyMTS)
protected
{ Protected declarations }
end;
implementation
uses ComServ;
initialization
TAutoObjectFactory.Create(ComServer, TMyMTS, Class_MyMTS, ciMultilnstance, tmApartment);
end.

В дополнение, мастер допишет библиотеку типов к проекту и откроет редактор библиотеки типов (рис. 3.36).


Рис. 3.36. Редактор библиотеки типов и MTS-объект



Содержание раздела