Создает связь с уведомлением или автоматическую связь, используемые средством динамического обмена данными (DDE).
DDEAdvise(nChannelNumber, cItemName, cUDFName, nLinkType) |
Параметры
- nChannelNumber
-
Задает номер канала.
- cItemName
-
Задает имя элемента. Например, Microsoft Excel ссылается на ячейки электронной таблицы, используя систему обозначений в виде номеров строк и столбцов. Имя элемента R1C1 определяет ячейку в первой строке и первом столбце электронной таблицы.
- cUDFName
-
Задает пользовательскую функцию, которая выполняется в том случае, когда устанавливается связь с уведомлением или автоматическая связь и изменяется элемент cItemName. Когда пользовательская функция выполняется, ей передаются следующие шесть параметров в указанном порядке:
Параметр Содержимое Channel Number (номер канала)
Номер канала приложения-сервера.
Action (действие)
ADVISE или TERMINATE.
Item (элемент)
Имя элемента; например, R1C1 в случае ячейки электронной таблицы Microsoft Excel.
Data (данные)
Новые данные (автоматическая связь) или пустая строка (связь с уведомлением)
Format (формат)
Формат данных, например CF_TEXT.
(статус уведомления)
Тип связи (0 = ручная, 1 = с уведомлением, 2 = автоматическая).
В операторе LPARAMETER или PARAMETER пользовательской функции должны быть предусмотрены шесть параметров, чтобы функция могла принять значения, переданные из приложения-сервера. Если устанавливается связь с уведомлением, выполняется функция, определенная пользователем, и в параметре Data передается пустая строка. Позже можно выдать функцию DDERequest( ) для получения данных. Если устанавливается автоматическая связь, выполняется функция, определенная пользователем, и данные передаются в параметре Data.
Параметр Action содержит значение ADVISE, если связь обновляется сервером. Вызывается функция, определенная пользователем, и когда связь закрывается клиентом или сервером, параметр Action содержит TERMINATE.
Любые значения, возвращаемые пользовательской функцией, игнорируются.
- nLinkType
-
Specifies the link type in the following way:
nLinkType Link type 0
Ручная
1
С уведомлением
2
Автоматическая
Можно отменить выдачу уведомлений из приложения-сервера, задав 0 в качестве nLinkType. При изменении элемента функция, определенная пользователем, выполняться не будет.
Возвращаемое значение
Logical
Примечания
Функция 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 |
Смотри также
Справочное руководство
Функция DDEInitiate( )Функция DDELastError( )
Функция DDESetOption( )
Функция DDETerminate( )
Прочие ресурсы
ФункцииСправочное руководство по языку (Visual FoxPro)