.
Monday 21st of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


Чтение значения
загрузка...

Чтение значения из свойства и запись нового значения в свойство производятся посредством вызова соответствующих методов. Имена методов формируются по принципу: чтение из свойства - Get_+<Имя_свойства>, а запись всвойство - Set_+<Имя_свойства>. Страница Parameters определяет параметры для соответствующих методов Get_xxx и Set_xxx.

Вновь обновите программный модуль (нажмите кнопку Refresh Implementation) и закройте редактор библиотеки типов. После этого в модуле MyComObj мы найдем объявление и реализацию методов чтения из свойства и записи в свойство.

type

TMyComObject = class(TTypedComObject, IMyComObject) protected

function Sum(Value1, Value2: Integer; out Res: OleVariant): HResult; stdcall; function Get_MyProperty(out Value: Integer): HResult; stdcall; function Set_MyProperty(Value: Integer): HResult; stdcall; end;

implementation uses ComServ;

function TMyComObject.Get_MyProperty( out Value: Integer): HResult; begin

{исходный код для чтения из поля} end;

function TMyComObject.Set_MyProperty(Value: Integer): HResult; begin

{исходный код для записи в поле} end;

Для того чтобы свойство приобрело работоспособность, объявите в секции protected целочисленное поле:

protected fMyProperty : integer;

и опишите тело методов чтения/записи:

function TMyComObject.Get_MyProperty( out Value: Integer): HResult; begin

Value:=fMyProperty; //чтение поля end;

function TMyComObject.Set_MyProperty(Value: Integer): HResult; begin

fMyProperty:=Value; //запись в поле end;

Сервер готов. Прежде чем запустить проект на выполнение, изучите модуль ComServerTLB. В этом файле находится важная справочная информация о фабрике класса CoMyComObject и интерфейсной части COM-объекта ImyComOb-ject, а также об уникальных идентификаторах GUID COM-сервера, COM-объекта и интерфейса.

unit ComServer_TLB;

{$TYPEDADDRESS OFF}

{$WARN SYMBOL_PLATFORM OFF}

{$WRITEABLECONST ON} {$VARPROPSETTER ON}

interface

uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;

const ComServerMajorVersion = 1; //версия COM-сервера до точки

ComServerMinorVersion = 0; //версия COM-сервера после точки

LIBID_ComServer: TGUID = '{FD84AE85-8936-11D8-87DA-FAA756C5ED2C}';

IID_IMyComObject: TGUID = '{FD84AE86-8936-11D8-87DA-FAA756C5ED2C}'; CLASS_MyComObject: TGUID = '{FD84AE88-8936-11D8-87DA-FAA756C5ED2C}';

type

IMyComObject = interface;

MyComObject = IMyComObject; IMyComObject = interface(IUnknown)

['{FD84AE86-8936-11D8-87DA-FAA756C5ED2C}']

function Sum(Value1:Integer; Value2:Integer; out Res: OleVariant): HResult; stdcall; function Get_MyProperty(out Value: Integer): HResult; stdcall; function Set_MyProperty(Value: Integer): HResult; stdcall; end;

CoMyComObject = class class function Create: IMyComObject;

class function CreateRemote(const MachineName: string): IMyComObject; end;

implementation uses ComObj;

class function CoMyComObject.Create: IMyComObject; begin

Result := CreateComObject(CLASS_MyComObject) as IMyComObject; end;

class function CoMyComObject.CreateRemote(const MachineName: string): IMyComObject; begin

Result := CreateRemoteComObject(MachineName, CLASS_MyComObject) as IMyComObject; end; end.

В разделе реализации модуля мы обнаружим два метода фабрики класса, предназначенные для запуска COM-сервера: CreateRemote() - на удаленном компьютере, Create() - на одном компьютере с COM-клиентом.


загрузка...
 

Самое популярное:

bottom

карта сайта