Опрос

Что вас больше интересует?

  • игры для nokia
  • темы на телефон
  • программы на мобильный
  • обзоры мобильных телефонов


 

Какие игры вы предпочитаете?

  • игры для мальчиков
  • игры для девочек
  • драки
  • стрелялки
  • логические игры
  • спортивные


 

счетчики

Спонсор раздела:

Шаблон кода с описанием класса

Статьи

Сразу после нажатия кнопки OK диалогового окна COM Object Wizard произойдут две удивительные вещи:

1. На экране компьютера появится окно редактора библиотеки типов с заголовком ComServer.tlb.

2. К исходному коду нашего проекта добавится еще один модуль с описанием нового класса.

К редактору библиотеки типов мы вернемся немного позже, а пока уделим внимание шаблону с описанием класса объекта TMyComObject.

По умолчанию шаблон кода получил безликое имя Unitl. Нажмите кнопку сохранения проекта и переименуйте модуль. Назовем новый модуль созвучно с именем описанного в нем класса - MyComObj.pas.

unit MyComObj;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses Windows, ActiveX, Classes, ComObj, ComServer_TLB, StdVcl;

type TMyComObject = class(TTypedComObject, IMyComObject) protected

{Declare IMyComObject methods here} end;

implementation

uses ComServ; //модуль с описанием класса TComServer initialization

TTypedComObjectFactory.Create(ComServer, TMyComObject, Class_MyComObject, ciMultiInstance, tmFree); end.

Директива {$WARN SYMBOL_PLATFORM OFF} указывает компилятору на то, что следующий за ней код может работать на всех известных Delphi платформах.

Обратите внимание на строку uses со списком подключаемых модулей. Некоторые имена библиотек нам пока незнакомы:

• Модуль AciveX содержит определения классических для Windows интерфейсов, например фабрики классов IClassFactory.

• Модуль ComObj включает описание базовых для COM-модели классов: TCom-Object, TComObjectFactory, TComServerObject...

• Модуль StdVcl содержит объявления стандартных интерфейсов библиотеки VCL.

• Модуль ComServerTLB автоматически создается средой программирования и содержит информацию о фабрике классов, интерфейсе COM-объекта иих GUID.

В модуле MyComObj декларируется описанный нами в диалоге настройки COM-объекта класс TmyComObject. Он формируется на базе TTypedComObject и предназначен для обслуживания «одноименного» (пока не определенного) интерфейса IMyComObject.

В начале раздела implementation к проекту подключается еще один модуль ComServ, в котором описан один-единственный класс TComServer, инкапсулирующий глобальный объект COM-сервер. Доступ к объекту обеспечивается через глобальную переменную ComServer.

Раздел инициализации содержит строку, ответственную за создание фабрики класса TTypedComObjectFactory. Синтаксис конструктора не совсем стандартный. Мы привыкли, что конструктор Delphi возвращает созданный им объект, а здесь на первый взгляд такого не происходит. Вместо этого втайне от нас фабрика класса регистрируется в менеджере фабрик. Для этого в теле конструктора фабрики спрятан метод ComClassManager.AddObjectFactory(self).

Добавить комментарий


Защитный код
Обновить