Страница 55 из 59 Компонент TDDECIientltem TObject—>TPersistent—”TComponent—>TDDEClientItem Модуль DDEMAN Страница Палитры компонентов System Этот компонент представляет элемент данных на клиентской стороне. После установления контакта с сервером нужно присвоить свойству (Pb) property DDEConv: TDDEClientConv; указатель на объект, соответствующий появившемуся контакту, а свойству (Pb) property DDEItem: String; имя элемента данных сервера. В этом случае все изменения будут отслеживаться. В рассмотренном ниже примере приложение-клиент вступает в контакт с сервером InfbServer на тему TimeTopic. При нажатии кнопки TimeButton связь устанавливается, при отпускании — разрывается. Метод TimeConvOpen, служащий обработчиком события ОпОреп, присваивает значения именам темы и элемента данных. const InfoServer = 'infoserv'; TimeConversation = 'TimeTopic'; ServerTimeItem = 'Timeltem' ; SCannotStart = 'Cannot start conversation'; procedure TFormI.TimeButtonClick(Sender: Tobject); begin if TimeButton.Down then begin if not TimeConv.SetLink(InfoServer, TimeConversation) or not TimeConv.OpenLink then begin MessageDIg(SCannotStart, mtError, [mbOk], 0) ; TimeButton.Down := False; end end else TimeConv.CloseLink; end; procedure TPormI.TimeConvOpen(Sender: TObject); begin ClientTimeItem.DDEConv := TimeConv; ClientTimeItem.DDEItem := ServerTimeItem; end; Организация данных у клиента сходна с той, которая принята на сервере: (Pb) property Text: String; (Pb) property Lines: TStrings; Свойство Text является подмножеством Lines и содержит первую строку этого набора. Когда изменяются данные на сервере, эти изменения отражаются в TDDEClientItem. В этот момент происходит событие: (Pb) property OnChange: TNotifyEvent; В обработчике этого события и нужно предусмотреть реакцию на изменение данных — пересчет формулы, обновление текста и т. п. Принципы работы с DDE отражены в примере DDEINFO. Приложение-сервер запускает таймер и с установленным периодом формирует текстовые строки со значением текущего времени и количества свободной памяти. Эти строки являются элементами данных соответствующих тем DDE. На форме клиента находятся две кнопки — Time и Memory. При их нажатии происходит попытка входа в соответствующий контакт. Если она была успешной, кнопка утапливается, и на ней отображается время или количество свободной памяти. При отжатии кнопки контакт разрывается. |