.
Урок 1. Введение в COM (TDdeClientConv, OLE). 
Автор megabax   
06.12.2010 г.
New Page 1

Урок 1. Введение в COM (TDdeClientConv, OLE)

Исходники к уроку можно скачать здесь..

Для начала давайте определимся, что такое COM и с чем его "едят". Данная аббревиатура означает Component Object Model (модель составных объектов). Эта технология создавалась с целью решить две проблемы, с которым сталкиваются программисты, работающие под Windows:

  • COM предоставляет в распоряжение программистов спецификацию, на основании которой можно создать объекты, функционирующие в разных языковых средах.
  • Эта технология определяет способы взаимодействия клиентских приложений, работающих на одной машине, с серверными приложениями, работающими на другой машине. 

Сначала технология COM начала развиваться как технология OLE (Object Linking and Embedding - связывание и внедрение объектов). Само OLE,  в свою очередь, появилось как одно из направлений DDE (Dinamic Data Excange - динамический обмен данными). Эти технологии позволяли получать и сохранять данные от приложения сервера, а так же получать информацию о самом приложении сервере. 

Вот сейчас мы это и продемонстрируем. на примере простенькой программы, которая отображает содержимое меню "все программы", вызываемое через кнопочку "Пуск"*:

Урок 1. Введение в COM (TDdeClientConv, OLE). 

 И так, положите на форму два компонента TListBox**:

Урок 1. Введение в COM (TDdeClientConv, OLE). 

Затем кладем на форму компонент TDdeClientConv**:

Урок 1. Введение в COM (TDdeClientConv, OLE). 

 Вот та в итоге у вас должна выглядеть форма**:

Урок 1. Введение в COM (TDdeClientConv, OLE). 

Свойствам DDEService и DDETopic компонента TDdeClientConv присвоим значение ProgMan**:

Урок 1. Введение в COM (TDdeClientConv, OLE). 

Создадим обработчик событий формы OnCreate:

procedure TfrmDDEDemo.FormCreate(Sender: TObject);

var p:PChar;

begin

   P:=DDEClientConv.RequestData('Groups');

   lbGroups.Items.SetText(P);

   StrDispose(P);

end;

Несколько комментариев к коду. Строкой 

P:=DDEClientConv.RequestData('Groups');

мы обращаемся к серверу DDE программ менеджера, что бы получить список групп (поэтому мы задавали значение ProgMan у соответствующих свойств компонента TDdeClientConv). Эта функция возвращает текст в виде строки с завершающим нулем (PChar). Метод SetText устанавливает в качестве содержимого списка содержимое этой самой строки. При этом он копирует данные, преобразуя их в нужный компоненту TListBox формат. Поэтому, что бы не засорять память, нам надо уничтожить исходный буфер, выделенный системой под строку с завершающим нулем. Это мы делаем процедурой StrDispose. 

Затем создадим обработчик нажатия на пункт верхнего списка (назовем его lbGroups, а нижний, соответственно lbItems):

procedure TfrmDDEDemo.lbGroupsClick(Sender: TObject);

var p:PChar;

begin

   P:=DDEClientConv.RequestData(lbGroups.Items[lbGroups.ItemIndex]);

   lbItems.Items.SetText(P);

   StrDispose(P);

end;

Здесь мы делаем почти тоже самое, только компоненту TDdeClientConv  указываем, что бы он получил не список групп, а содержимое группы, котору в данный момент юзер выделил в списке. 

Теперь запускаем программу и смотрим, как он работает:

Урок 1. Введение в COM (TDdeClientConv, OLE). 

(C) Шуравин Александр 


Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями   программного продукта "Windows XP", авторское право на который принадлежит корпорации "Microsoft"

Скриншоты, помеченные знаком ** , являются цитатами и иллюстрациями  программного продукта "Turbo Delphi", авторское право на который принадлежит "Borland Software Corporation"


 

Последнее обновление ( 03.09.2013 г. )