Создает связь с уведомлением или автоматическую связь, используемые средством динамического обмена данными (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, чтобы определить, какой именно элемент изменился и какого рода связь была установлена.
Copy Code | |
|---|---|
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)