Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

Параметры cUdfName-функции

Параметр

Описание

ChannelNumber

Номер DDE-канала

Action

Действие: XACTCOMPLETE (успешная транзакция) или XACTFAIL (неудачная транзакция)

Item

Имя элемента, например "R1C1" для ячейки листа Microsoft Excel

Data

Новые данные (REQUEST) или переданные данные (POKE или EXECUTED)

Format

Формат данных, например CF_TEXT

Transaction Number

Номер транзакции, возвращаемый DDERequest( )

При необходимости отмена незавершенной транзакции выполняется DDEAbortTrans( ). Если транзакция сорвалась, то причину неудачи можно узнать, употребив DDELastError( ).

Пример (приведен в справке VFP). DDEExecute( ) используется для максимизации окна Excel.

Run /n C:\Program Files\Microsoft Office\Office10\Excel

gnChanNum = DDEInitiate('Excel', 'Лист1')

if gnChanNum != –1

glExecute = DDEExecute(gnChanNum, '[App.Maximize]')

if glExecute then

wait window 'Окно Excel распахнуто'

endif

DDETerminate(gnChanNum) && Закрываем канал gnChanNum

endif

Функция

DDEPoke(nChannelNumber, cItemName, cDataSent [, cDataFormat [, cUDFName]])

посылает данные клиента серверу по DDE-каналу nChannelNumber.

Функция, если опущен параметр cUDFName, возвращает .T., если данные успешно отосланы, или .F. – в противном случае. Если параметр cUDFName задан, то возвращается номер транзакции, а в случае ошибки – число –1.

Параметры:

cItemName – строка, содержащая имя элемента, которому посылаются данные, например ячейка "R1C1" листа Microsoft Excel.

cDataSent – строка с посылаемыми данными.

cDataFormat – формат посылаемых данных. По умолчанию берется формат CF_TEXT-данных. При таком формате поля разделяются символами табуляции, а строки символами новой строки и возврата каретки.

cUDFName – см. описание одноименного параметра функции DDEExecute( ).

Пример. Строится диаграмма Microsoft Excel по данным массива sales.

dimension sales(3, 8)

&& Формируем массив sales

for k = 1 to Alen(sales, 2)

sales(1, k) = 'Hat_' + Transform(k)

sales(2, k) = Transform(20 + 3 * (–1)^k)

sales(3, k) = "20"

next

&&

&& Массив sales

&& Hat_1 17 20

&& Hat_2 23 20

&& …

&& Hat_7 17 20

&& Hat_8 23 20

&&

Run /n C:\Program Files\Microsoft Office\Office10\Excel

gnChanNum = DDEInitiate('Excel', 'Лист1')

if gnChanNum = –1

wait window 'Канал не установлен'

return

endif

&& Передаем данные в Microsoft Excel

for k = 1 to Alen(sales, 2)

rowNo = 'R' + Transform(k)

cell1 = rowNo + 'C1'

cell2 = rowNo + 'C2'

cell3 = rowNo + 'C3'

DDEPoke(gnChanNum, cell1, sales(1, k))

DDEPoke(gnChanNum, cell2, sales(2, k))

DDEPoke(gnChanNum, cell3, sales(3, k))

next

&& Выделяем область и строим диаграмму. Результат приведен на рис. 17.1

DDEExecute(gnChanNum, '[Select("R1C1:'+rowNo+'C3")]')

DDEExecute(gnChanNum, '[New(2, 1)]')

DDETerminate(gnChanNum) && Закрываем канал gnChanNum

Рис. 17.1. Диаграмма Microsoft Excel по данным массива sales

Функция

DDERequest(nChannelNumber, cItemName [, cDataFormat [, cUDFName]])

запрашивает данные сервера по каналу nChannelNumber.

Возвращает, если запрос выполнен, строку, содержащую данные, или пустую строку – в противном случае. Если включена cUDFName-функция, то DDERequest( ) вернет в случае удачи номер транзакции, или –1 при возникновении ошибки.

Смысл параметров cItemName и cDataFormat см. в описании функции DDEPoke( ), а параметра cUDFName – в описании функции DDEExecute( ).

Пример (приведен в справке VFP). DDERequest( ) запрашивает данные элемента 'R1C1' листа 'Лист1' приложения Microsoft Excel.

Run /n C:\Program Files\Microsoft Office\Office10\Excel

gnChanNum = DDEInitiate('Excel', 'Лист1')

if gnChanNum != –1 then

nRequest = DDERequest(gnChanNum, 'R1C1')

if not Empty(nRequest) and DDELastError( ) = 0

&& Запрос удачно выполнен

wait window 'R1C1-данные: ' + nRequest

endif

DDETerminate(gnChanNum) && Закрываем канал gnChanNum

endif

Функция

DDELastError( )

возвращает номер ошибки последней выполненной DDE-функции.

Функция вернет 0, если последняя DDE-функция выполнена без ошибки.

Возможные номера DDE-ошибок приведены в табл. 17.8.

Таблица 17.8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]