

| стрелялки |
| спорт |
| драки |
| стратегии |
| гонки |
| логические |
| азартные |
| аркады |
| эротические |
| фильмы онлайн |
| Чтение значения |
|
Чтение значения из свойства и запись нового значения в свойство производятся посредством вызова соответствующих методов. Имена методов формируются по принципу: чтение из свойства - 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-клиентом. |
