⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dde函数.txt

📁 Vfp 文档 一些经典编程文章 可供初学者学习编程时使用
💻 TXT
📖 第 1 页 / 共 3 页
字号:
DDE 函数
在 Visual FoxPro 和其他 Microsoft Windows 应用程序之间交换数据。
说明:
Visual FoxPro 可以作为服务程序向 Microsoft Windows 应用程序发送数据,也可作为客户从其他的 Microsoft Windows 应用程序接收数据。
在支持 DDE(动态数据交换)的应用程序中使用以下命名约定。
Name             说明
___________________________________
Service       当一客户要访问服务程序时,服务程序响应的服务名称。
Name        指定数据的主题名。一个服务程序能支持很多服务名。对于基于文件的应用程序,主题名通常为文件名;而在其他程序中,主题名会根据程序的不同而不同。要访问服务程序,客户除了指定服务程序服务名外,还要指定主题名。
ItemName     指定服务程序可以传送给客户的数据单元名称。
要从其他应用程序请求数据,可创建一个 Visual FoxPro 程序,将 Visual FoxPro 作为一客户。下面简述一个过程,按照这个过程可以创建一个向其他应用程序请求数据的Visual FoxPro 程序:
用 DDEInitiate()函数建立一个服务程序的链接。
如果成功地建立了链接,则可以使用 DDERequest()函数向服务程序请求数据,DDERequest()函数能重复发送以请求更多的数据。
接收到数据后,使用 DDETerminate()函数终止与服务程序的链接,释放系统资源。
以上函数建立了一个冷链接,当客户对应用程序间的所有通讯初始化时,存在冷链接。有关其他类型链接的讨论,请参阅 DDEAdvise( )。
下面简述一个过程,此过程建立一个作为服务程序的 Visual FoxPro 应用程序:
利用 DDEService()函数创建一个服务并指定服务类型。
利用 DDESetTopic()函数创建服务主题,并为该主题指定一个过程。当客户请求中指定了该主题时,执行这个过程。
创建 DDESetTopic()函数中指定的过程,以接收传给该过程的参数。
在过程中处理请求,如果合适,向客户返回这些数据。
注意
这些 DDE 函数在以下几个方面与以前的 Visual FoxPro 函数有不同约定:
这些函数名的前 4 个字符不能唯一确定该函数。
函数名必须超过 10 个字符且不能缩写。
DDE 函数            说明
DDEAbortTrans()     结束一个异步 DDE 事务。
DDEAdvise()        创建 DDE 中的报告链接或自动链接。
DDEEnabled()       启用或禁止 DDE 处理,或者返回 DDE 处理状态。
DDEExecute()       使用 DDE,向另一个应用程序发送一条命令。
DDEInitiate()        建立 Visual FoxPro 和另一个 Microsoft Windows 应用程序之间的 DDE 通道。    
DDELastError()     返回最后执行的 DDE 函数错误编号。
DDEPoke()         DDE 会话过程中,在客户和服务程序之间发送数据。
DDERequest()      在动态 DDE 会话中,向一个服务程序请求数据。
DDESetOption()     更改或返回 DDE 设置。
DDESetService()   创建、释放或修改 Visual FoxPro 中的服务名和设置。
DDESetTopic()   DDE 会话过程中,在服务名中创建或释放一个主题名。DDETerminate()   关闭一个用 DDEInitiate()函数建立的通道。
请参阅DDEAbortTrans(), DDEAdvise(), DDEEnabled(), DDEExecute(),DDEInitiate(), DDELastError(), DDEPoke(), DDERequest(), DDESetOption(),DDESetService(), DDESetTopic(), DDETerminate(),
DDEAbortTrans()函数
    结束一次异步动态数据交换 ( DDE ) 处理。
语法
    DDEAbortTrans(nTransactionNumber)
返值类型
   逻辑值
参数描述
    nTransactionNumber
    当事务发送到服务程序时,该参数指定 DDEExecute()函数、DDEPoke()函数或 DDERequest()函数返回的事务编号。
说明
    异步事务允许 Visual FoxPro 程序继续执行,而不必等待服务程序响应数据请求。在服务程序响应时,除非指定执行用户自定义函数,否则 DDExecute()函数、DDEPoke()函数和 DDERequst()函数要等待一定的服务程序响应时间,这个时间由 DDESetOption()函数指定。指定一个用户自定义函数并在这些函数中执行该函数,会创建一个异步事务。
    如果服务程序请求处理完成前调用了 DDEAbortTrans()函数,则在事务中不会调用用户自定义函数
如果成功地结束异步事务,则 DDEAbortTrans()函数返回“真”(.T.);如果不能结束异步事务,则返回“假”(.T.)。使用 DDELastError()函数可确定不能结束该事务的原因。
请参阅DDEExecute(), DDELastError(), DDEPoke(), DDERequest()
DDEAdvise()函数
创建一个报告链接或自动链接,用来进行动态数据交换 ( DDE )。
语法
DDEAdvise(nChannelNumber, cItemName, cUDFName, nLinkType)
返值类型
逻辑值
参数描述
   nChannelNumber指定通道号。cItemName指定项名。
   例如,Microsoft Excel 使用行标志和列标志指出工作表的单元,项名 R1C1 指出工作表第一行、第一列的单元。
    UDFName
当建立一个报告链接或自动链接并且修改 cItemName 时,指定要执行的用户自定义函数。执行用户自定义函数时,按下面给定顺序给用户自定义函数传递六个参数:
参数                     内容
Channe            服务程序的通道号
lNumber
Action             ADVISE 或 TERMINATE
Item              项名。如:R1C1 表示一个 Microsoft Excel 的工作表单元
Data              新数据(自动链接)或空字符串(报告链接)
Format            数据格式。如:CF_TEXT
Advise Status       链接类型(0 = 人工,1 = 报告,2 = 自动)
用户自定义函数在它的 LPARAMETER 或 PARAMTER 语句中应该有六个参数接受从服务程序传递的值。如果建立的是报告链接,则执行用户自定义函数时,Data 参数中将传入一个空字符串,在此之后可以用 DDERequest()函数获取这些数据;如果建立自动链接,则执行用户自定义函数,并通过 Data 参数传送数据。
当链接由服务程序更新时,Action 参数包含 ADVISE。当客户或服务程序关闭链接时,调用用户自定义函数,并且 Action 参数包含 TERMINATE。
任何用户自定义函数返回的值都被忽略。

NLinkType
可以指定以下链接类型:
nLinkType       链接类型
0 人工
1 报告
2 自动
可通过将 nLinkType 指定为 0 来关闭服务程序发来的通知。如果项名改变了,就不执行用户自定义函数。
说明
DDEAdvise()函数用来为服务程序中的一个项名创建报告链接或自动链接。当用DDEAdvise()函数创建报告链接时,服务程序会告诉 Visual FoxPro 项名已被更新;如果创建自动链接,服务程序就通知 Visual FoxPro,告诉它项名已被更新,同时将新数据传送给 Visual FoxPro。
在创建一个链接前,必须用 DDEInitiate()函数建立一个通向服务程序的通道。可以用 DDEAdvise()函数关闭服务程序的通知。
当 DDEAdvise()函数执行成功,返回“真”(.T.);否则返回“假”(.F.)。
示例
以下示例演示了如何建立一个名为 Sheet1 的 Microsoft Excel 工作表的 DDE 通道。使用DDEAdvise()建立两个工作表单元格中(R1C1 和 R1C2)数据的链接。当这两个单元格中的任意一个数据更改时,执行用户自定义函数 NEWDATA 。此用户自定义的函数检测 item 和 advise 参数以确定是哪一个参数更改了和已建立了什么类型的链接。
PUBLIC mchannum
mchannum = DDEInitiate('Excel', 'Sheet1')
IF mchannum != -1
= DDEAdvise(mchannum, 'R1C1', 'newdata', 1)     && 通知链接
= DDEAdvise(mchannum, 'R1C2', 'newdata', 2)     && 自动链接
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
ENDI
DDEEnabled()函数
启用或禁止动态数据交换 (DDE) 处理,或返回 DDE 处理状态。
语法
DDEEnabled([lExpression1 | nChannelNumber [, lExpression2]])
返值类型
逻辑值
参数描述
lExpression1
当为“真”(.T.) 或“假”(.F.) 时,全局启用或禁止 DDE 处理。如果成功地启用或禁止 DDE,则 DDEEnabled()函数返回“真”(.T.);否则返回“假”(.F.)。
nChannelNumber
指定通道号,DDEEnabled()函数返回该通道的 DDE 处理状态。如果已经启用指定通道的 DDE 处理,则 DDEEnabled()函数返回“真”(.T.);如果禁止 DDE 处理,则返回“假”(.F.)
    Expression2
要为指定的通道启用 DDE 处理,应包含通道号 (nChannelNumber),并将lExpression2 指定为“真”(.T.);若要为指定的通道禁止 DDE 处理,则包含通道编号 (nChannelNumber) 并将 lExpression2 指定为“假”(.F.)。
说明
使用 DDEEnabled()可以全局启用或禁止 DDE 处理,也可以为特定的通道启用或禁止 DDE 处理。
DDEEnabled()函数能在短时间内保护关键代码或禁止链接。当 DDE 处理禁止时,客户请求加入队列等待,直到 DDE 处理激活。
如果 DDEEnabled()不带任何选项参数运行,则返回全局 DDE 处理状态。如果 DDE处理已经全局启用,则 DDEEnabled()函数返回“真”(.T.);如果 DDE 处理已经全局禁止,则返回“假”(.F.)。

DDEExecute()函数
使用动态数据交换 (DDE) 向另一个应用程序发送命令。
语法
DDEExecute(nChannelNumber, cCommand [, cUDFName])
返值类型
逻辑值
参数描述
nChannelNumber指定通道号。
cCommand指定要发往另一个应用程序的命令。命令格式由接收命令的程序决定,查阅应用程序的文档可以了解正确语法。
CUDFName
允许异步命令执行请求。如果省略 cUDFName,客户应用程序等待的时间由DDESetOption()函数指定。如果用 cUDFName 指定一个用户自定义函数,则客户程序在发出命令执行请求后立即执行下一个命令。
当服务程序执行命令后,就执行 cUDFName 指定的用户自定义函数,用户自定义函数接受六个参数,它们按下列顺序给出
参数                      内容
Channel Number    服务程序的通道号
Action            XACTCOMPLETE(执行成功时
                 XACTFAIL(命令执行失败时)
Item             项名,例如 R1C1 表示 Microsoft Excel 工作表单元
Data             新数据 (REQUEST)、传递的数据(POKE 或 EXECUTED)
Format           数据格式,例如 CF_TEXT
Transaction       DDEExecute()函数返回的事务编号
Number
使用 DDEAbortTrans()函数可以取消一个未完成的事务。如果事务失败,可用DDElastError()函数确定失败的原因。
当包含 cUDFName 时,DDEExecute()函数并不返回一个逻辑值,而返回一个事务号。如果发生错误则返回 -1。
说明

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -