Справочник по компонентам Delphi. Часть 2 - Компонент TDDECIientltem
ОГЛАВЛЕНИЕ
Компонент TDDECIientltem
TObject -> TPersistent -> TComponent -> TDDEClientItem
Модуль DDEMAN
Страница Палитры компонентов System
Этот компонент представляет элемент данных на клиентской стороне. После установления контакта с сервером нужно присвоить свойству
(Pb) property DDEConv: TDDEClientConv;
указатель на объект, соответствующий появившемуся контакту, а свойству
(Pb) property DDEItem: String;
имя элемента данных сервера. В этом случае все изменения будут отслеживаться.
В рассмотренном ниже примере приложение-клиент вступает в контакт с сервером InfbServer на тему TimeTopic. При нажатии кнопки TimeButton связь устанавливается, при отпускании — разрывается. Метод TimeConvOpen, служащий обработчиком события ОпОреп, присваивает значения именам темы и элемента данных.
constInfoServer = '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;
Когда изменяются данные на сервере, эти изменения отражаются в TDDEClientItem. В этот момент происходит событие:
(Pb) property OnChange: TNotifyEvent;
В обработчике этого события и нужно предусмотреть реакцию на изменение данных — пересчет формулы, обновление текста и т. п.
Принципы работы с DDE отражены в примере DDEINFO. Приложение-сервер запускает таймер и с установленным периодом формирует текстовые строки со значением текущего времени и количества свободной памяти. Эти строки являются элементами данных соответствующих тем DDE. На форме клиента находятся две кнопки — Time и Memory. При их нажатии происходит попытка входа в соответствующий контакт. Если она была успешной, кнопка утапливается, и на ней отображается время или количество свободной памяти. При отжатии кнопки контакт разрывается.