Создает связь с уведомлением или автоматическую связь, используемые средством динамического обмена данными (DDE).
Синтаксис:
DDEAdvise(nChannelNumber, cItemName, cUDFName, nLinkType)
Параметры:
nChannelNumber
Задает номер канала.
cItemName
Задает номер элемента. Например, Microsoft Excel ссылается на ячейки электронной таблицы, используя систему обозначений в виде номеров строк и столбцов. Имя элемента R1C1 определяет ячейку в первой строке и первом столбце электронной таблицы.
cUDFName
Задает пользовательскую функцию, которая выполняется в том случае, когда устанавливается связь с уведомлением или автоматическая связь и изменяется элемент cItemName. Когда пользовательская функция выполняется, ей передаются следующие шесть параметров в указанном порядке:
В операторе LPARAMETER или PARAMETER пользовательской функции должны быть предусмотрены шесть параметров, чтобы функция могла принять значения, переданные из приложения-сервера. Если устанавливается связь с уведомлением, выполняется функция, определенная пользователем, и в параметре Data передается пустая строка. Позже можно выдать функцию DDERequest( ) для получения данных. Если устанавливается автоматическая связь, выполняется функция, определенная пользователем, и данные передаются в параметре Data.
Параметр Action содержит значение ADVISE, если связь обновляется сервером. Вызывается функция, определенная пользователем, и когда связь закрывается клиентом или сервером, параметр Action содержит TERMINATE.
Любые значения, возвращаемые пользовательской функцией, игнорируются.
nLinkType
Задает тип связи следующим образом:
nLinkType Тип связи 0 Ручная 1 С уведомлением 2 Автоматическая
Можно отменить выдачу уведомлений из приложения-сервера, задав 0 в качестве nLinkType. При изменении элемента функция, определенная пользователем, выполняться не будет.
Результат:
Логический
Комментарии:
Допустима только в Visual FoxPro и FoxPro для Windows.
Функция DDEAdvise( ) используется для создания связи с уведомлением или автоматической связи с данным элементом в приложении-сервере. Когда DDEAdvise( ) создает связь с уведомлением, приложение-сервер будет уведомлять Visual FoxPro об изменении элемента с данным именем. Если создается автоматическая связь, приложение-сервер уведомляет Visual FoxPro об изменении элемента и передает в Visual FoxPro новые данные.
Чтобы создать связь, предварительно необходимо с помощью функции DDEInitiate( ) установить канал с приложением-сервером.
Функцию DDEAdvise( ) можно также использовать для отмены выдачи уведомлений из сервера.
DDEAdvise( ) возвращает значение "истина" (.T.) в случае успешного выполнения; в противном случае возвращается "ложь" (.F.).
* Следующий пример демонстрирует установку канала DDE с электронной * таблицей Sheet1 (Microsoft Excel). Функции DDEAdvise( ) устанавливают две * связи с содержимым двух ячеек электронной таблицы (R1C1 и R1C2). При * изменении данных в какой-либо из этих двух ячеек выполняется * пользовательская функция NEWDATA. Она тестирует параметры item и * advise, чтобы определить, какой именно элемент изменился и какого * рода связь была установлена. PUBLIC mchannum mchannum = DDEInitiate('Excel', 'Sheet1') IF mchannum != -1 = DDEAdvise(mchannum, 'R1C1', 'newdata', 1) && Notify link = DDEAdvise(mchannum, 'R1C2', 'newdata', 2) && Automatic link WAIT WINDOW 'Enter data in first two cells in Excel.' ENDIF PROCEDURE newdata PARAMETERS channel, action, item, data, format, advise IF action = 'ADVISE' DO CASE CASE item = 'R1C1' && Notify link newvalue = DDERequest(channel, item) ? 'R1C1 notify link: ' + newvalue CASE item = 'R1C2' && Automatic link newvalue = data ? 'R1C2 automatic link: ' + newvalue ENDCASE ELSE IF action != "TERMINATE" = DDETerminate(mchannum) ENDIF ENDIF