|
LinkExecute
在一次 DDE 对话过程中将命令字符串发送给发送端应用程序。不支持命名参数。
语法:
object.LinkExecute string
string 必需的。一个字符串表达式,它含有源应用程序所识别的命令。
说明:
string 的实际值根据源应用程序而改变。例如,Microsoft Excel 和 Microsoft Word for
Windows 接受括在方括号 ([])
中宏命令所组成的命令字符串。要查看源应用程序所接受的命令字符串,请查阅该应用程序的文档。
例:本示例建立一个 Microsoft Excel 的 DDE
链接,将一些值放置到一个新工作单的第一行的单元里,并按照这些值画图。LinkExecute 向 Microsoft Excel
发送激活工作单的命令,选择一些值并按照它们画图。要检验此示例,计算机中必须装有 Microsoft Excel 而且要在
Autoexec.bat 文件的路径中声明。将本例代码粘贴到一个带缺省名 Text1 的 TextBox
控件的窗体的声明部分,然后按 F5 键并单击该窗体。
Private Sub Form_Click ()
Dim Cmd, I, Q, Row, Z ' 声明变量。
Q = Chr(34) ' 定义引用标记。
' 创建一个含有 Microsoft Excel 宏指令的字串。
Cmd = "[ACTIVATE(" & Q &"SHEET1" & Q & ")]"
Cmd = Cmd & "[SELECT(" & Q & "R1C1:R5C2" & Q & ")]"
Cmd = Cmd & "[NEW(2,1)][ARRANGE.ALL()]"
If Text1.LinkMode = vbNone Then
Z = Shell("Excel", 4) ' 启动 Microsoft Excel。
Text1.LinkTopic = "Excel|Sheet1" ' 设置连接主题。
Text1.LinkItem = "R1C1" ' 设置连接项目。
Text1.LinkMode = vbLinkManual ' 设置连接模式。
End If
For I = 1 To 5
Row = I ' 定义行号。
Text1.LinkItem = "R" & Row & "C1" ' 设置连接项目。
Text1.Text = Chr(64 + I) ' 将值放置在 Text 中。
Text1.LinkPoke ' 将值放入单元。
Text1.LinkItem = "R" & Row & "C2" ' 设置连接项目。
Text1.Text = Row ' 将值放置在 Text 中。
Text1.LinkPoke ' 将值放入单元。
Next I
On Error Resume Next
Text1.LinkExecute Cmd ' 执行 Microsoft Excel 命令。
MsgBox "LinkExecute DDE demo with Microsoft Excel finished.", 64
End
End Sub
LinkPoke
在 DDE 对话过程中将 Label、PictureBox 或 TextBox 控件的内容传送给发送端应用程序。
语法:object.LinkPoke
说明:
object 是包含在 DDE 对话中作为接收端 的 Label、PictureBox 或 TextBox 的名称。如果
object 为 一个Label,则 LinkPoke 将 Caption 属性的内容传输到源端。如果 object 为一个
PictureBox,则 LinkPoke 将 Picture 属性的内容传送给源端。如果 object 为一个 TextBox,则
LinkPoke 将 Text 属性的内容传送给源端。
典型情况下,一次 DDE 对话的信息从源端向接收端流动。但是,LinkPoke
允许接收端对象给源端提供数据。并非所有的源应用程序都接受这种方法提供的数据,如果源应用程序不接受数据,则会有一个错误发生。
例:本示例建立一个 Microsoft Excel 的 DDE
链接,将一些值放置到一个新工作单的第一行的单元里,并按照这些值画图。LinkPoke 将画图需要的值发送到 Microsoft
Excel 的工作单上。要检验此示例,计算机中必须装有 Microsoft Excel 而且要在 Autoexec.bat
文件的路径中声明。将本例代码粘贴到一个带缺省名 Text1 的 TextBox 控件的窗体的声明部分,然后按 F5
键并单击该窗体。
Private Sub Form_Click ()
Dim Cmd, I, Q, Row, Z ' 声明变量。
Q = Chr(34) ' 定义引用标记。
' 创建一个含有 Microsoft Excel 宏指令的字串。
Cmd = "[ACTIVATE(" & Q &"SHEET1" & Q & ")]"
Cmd = Cmd & "[SELECT(" & Q & "R1C1:R5C2" & Q & ")]"
Cmd = Cmd & "[NEW(2,1)][ARRANGE.ALL()]"
If Text1.LinkMode = vbNone Then
Z = Shell("Excel", 4) ' 启动Microsoft Excel。
Text1.LinkTopic = "Excel|Sheet1" ' 设置连接主题。
Text1.LinkItem = "R1C1" ' 设置连接项目。
Text1.LinkMode = vbLinkManual ' 设置连接模式。
End If
For I = 1 To 5
Row = I ' 定义行号。
Text1.LinkItem = "R" & Row & "C1" ' 设置连接项目。
Text1.Text = Chr(64 + I) ' 将值放置在 Text 中。
Text1.LinkPoke ' 将值放入单元。
Text1.LinkItem = "R" & Row & "C2" ' 设置连接项目。
Text1.Text = Row ' 将值放置在 Text 中。
Text1.LinkPoke ' 将值放入单元。
Next I
Text1.LinkExecute Cmd ' 执行 Microsoft Excel 命令。
On Error Resume Next
MsgBox "LinkPoke DDE demo with Microsoft Excel finished.", 64
End
End Sub
LinkRequest
在一次 DDE 对话中请求发送端应用程序更新 Label、PictureBox 或 TextBox 控件中的内容。
语法:object.LinkRequest
说明:
object 是包含在一次 DDE 对话中作为接收端的 Label、PictureBox 或 TextBox
的名称。LinkRequest 引起源应用程序将最当前的数据发送给 object,并且,如果 object 为
Label,则更新 Caption 属性设置,如果 object 为 PictureBox,则更新 Picture
属性设置,如果 object 为 TextBox,则更新 Text 属性设置。
如果 object 的 LinkMode 属性设置为自动( 1 或 vbLinkAutomatic),则源应用程序自动更新
object 而不需要 LinkRequest。如果 object 的 LinkMode 属性设置为手工(2 或
vbLinkManual),则只有使用 LinkRequest 时源应用程序才更新 object。如果 object 的
LinkMode 属性设置为通知 Notify( 3 或 vbLinkNotify),则源端通过调用 LinkNotify
事件通知接收端已更改数据。然后接收端必须使用 LinkRequest 更新数据。
例:本示例使用 LinkRequest 更新含有 Microsoft Excel
工作单中值的正文框的内容。要检验此示例,计算机上必需正在运行着 Microsoft Excel。将一些数据放到缺省工作单
(Sheet1.xls) 第一列开始的一些单元中。将本例代码粘贴到一个被称为 Text1 的 TextBox
控件的窗体的声明部分,然后按 F5 键并单击该窗体。
Private Sub Form_Click ()
If Text1.LinkMode = vbNone Then ' 测试连接模式。
Text1.LinkTopic = "Excel|Sheet1" ' 设置连接主题。
Text1.LinkItem = "R1C1" ' 设置连接项目。
Text1.LinkMode = vbLinkManual ' 设置连接模式。
Text1.LinkRequest ' 更新正文框内容。
Else
If Text1.LinkItem = "R1C1" Then
Text1.LinkItem = "R2C1"
Text1.LinkRequest ' 更新正文框内容。
Else
Text1.LinkItem = "R1C1"
Text1.LinkRequest ' 更新正文框内容。
End If
End If
End Sub
LinkSend
在一次 DDE 对话中将 PictureBox 控件的内容传输到的接收端应用程序。
语法:object.LinkSend
说明:
object 必须是 Form 对象中的 PictureBox,它是一次 DDE 对话中的发送端。
当其他一些应用程序与您的应用程序中的 Form 建立自动链接时,Visual Basic 在 Form 中的 TextBox 或
Label 内容改变时会通知它们。但是,当源 Form 中的 PictureBox 的 Pictur
属性设置更改时,Visual Basic 不会自动通知 DDE
接收端应用程序。由于图形的数据量可以非常大,而且由于在每个像素更改时都更新接收端应用程序意义不大,所以 Visual Basic
要求在 PictureBox 的内容更改时使用 LinkSend 方法显式地通知 DDE 的各接收端应用程序。
|