Методика создания клиента в Delphi
а) Для взаимодействия с СОМ-сервером целесообразно создать:
• Проект, например, с именем ComTest.Dpr.
• Блок с описанием интерфейса. Он может быть полностью аналогичен файлу, созданному при проектировании сервера и просто скопирован.
• Блок с экранной формой, например, с именем ComForm. В этом блоке следует подключить блок с интерфейсом IntfCom и включить константу с GUID класса Class_Sum:
Unit ComForm;
Uses.., ComObj, IntfCom; Const
Class_Sum:TGUID='{EODBF9F4-2C63-HD6-8E8F-00608C93D419}’;
б) В блоке с экранной формой следует описать переменную интерфейсного типа, например, в разделе Private класса TForm1.
Private
pSum: ISum; // Указатель (ссылка) на интерфейс
в) Для создания объекта и запроса на услуги объекта (вызова методов) можно включить следующую строку кода:
Procedure TForm1.ButtonlCIick(Sender: TObject);
Var I: Integer;
Begin
pSum:=CreateComObject(Class_Sum) As ISum;// Получаем ссылку
д) Особенность работы с сервером с несколькими объектами. Отличия в реализации клиента заключаются в том, что в блок с экранной формой СоmForm необходимо включить:
• в объявление класса формы — переменные-ссылки на каждый дополни
тельный интерфейс, аналогично pSum.
• типизированные константы, аналогичные Class_Sum.
• реализации процедур вызова всех дополнительных объектов, аналогичные TForm1.ButtonlClick.
е) Особенность работы с объектом, реализующим несколько интерфейсов. В блок с экранной формой ComFonn необходимо включить:
• в объявление класса формы — переменные-ссылки на каждый дополни
тельный интерфейс, аналогично pSum.
• реализации процедур вызова всех дополнительных объектов, в которых, однако, получение ссылки (назовем ее pFac) на необходимый интерфейс (назовем его IFac) должно выглядеть примерно следующим образом:
pSum:=CreateComObject(Class_Sum) As ISum;
pSum.QueryInterface(IFac, pFac);
Или, после получения указателя pSum на интерфейс ISum:
pFac:=pSum As IFac;
Далее можно вызывать методы интерфейса IFac.