|
||||||||
|
Динамический обмен данными (DDE). TDDEClientConv
Компонент TDDEClientConv осуществляет контакт на клиентской стороне. Именно в нем описаны методы, отвечающие за установление контакта. Имена требуемых сервера DDE и темы содержатся в свойствах:
Сервер и тема устанавливаются при вхождении в контакт. Предусмотрены два режима вхождения в него:
Метод
присваивает серверу и теме имена, равные Service и Topic, а если выбран режим контакта ddeAutomatic ? то и устанавливает контакт. Будьте внимательны при задании параметров метода? здесь учитывается регистр символов. В случае режима ddeManual для установления контакта необходимо вызвать дополнительно метод:
Этот метод сначала закрывает предыдущий контакт, затем он пытается связаться с сервером DDEService на тему DDETopic. Если это не удается сразу (например, если требуемый сервер DDE отсутствует), то делается попытка загрузить программу с именем, определенным в свойстве
и установить контакт с ней. Если оно не определено (ServiceApplication = ??), то в качестве последней попытки для контакта пробуется имя, представляющее собой конкатенацию имен сервера и темы, разделенных пробелом. В случае неудачи метод OpenLink возвращает False. Можно связаться с сервером, если он поместил данные о контакте в буфер обмена. В этом случае метод
переключит компонент на новый контакт и вернет значение True. Наконец, метод
разрывает контакт с сервером DDE. Метод
инициирует начало обмена данными. Обычно он вызывается в методе OpenLink. Как уже упоминалось, основное направление потоков данных ? от сервера к клиенту, однако возможно и обратное. При помощи двух методов можно присвоить новые значения элементу данных сервера:
Здесь Item ? имя элемента данных, Data ? передаваемые текстовые данные. Кроме того, некоторые серверы DDE имеют собственные наборы макрокоманд, запрос на выполнение которых можно послать от клиента. К ним относятся многие приложения, в т. ч. СУБД и электронные таблицы, такие, как Paradox и MS Excel; наиболее типичным примером служит Program Manager. Запрос на выполнение макрокоманд посылают методы:
Серверу может потребоваться определенное время для выполнения этих операций. Если до их окончания снова загрузить его работой, то это может привести к непредсказуемым результатам. Чтобы отследить состояние сервера, нужно установить параметр функции waitFlg в True. С началом операции свойство
устанавливается в True. При этом вызовы последних четырех описанных методов отрабатываться не будут, пока сервер не известит об окончании операции, и WaitStat не примет значение False. Это свойство доступно только по чтению. Клиент может запросить данные от сервера немедленно с помощью метода:
Формат обмена данными можно узнать из свойства:
Перефразируя Генри Форда, скажем, что можно обмениваться данными любого формата, если этот формат ? CF_TEXT. Если возможностей, предоставляемых методами и свойствами класса, недостаточно, то для вызова процедур библиотеки DDEML программисту доступен дескриптор контакта:
В полученном от сервера тексте могут быть специальные управляющие символы ?<Enter>, <Tab>, <Backspace> и другие. Их можно отфильтровать (подавить), если свойство
установлено в False. В этом случае все символы ASCII с десятичными кодами от 1 до 31 заменяются на пробел (код 32). В случае True преобразования не происходит. Так же, как и в TDDEServerConv, при открытии и закрытии контакта вы можете выполнить специфические действия путем обработки событий:
Свойство
по-видимому, зарезервировано для дальнейших применений.
Для комментария : kadan@grsu.grodno.by | |||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |