与 UserControl 对象类似,可以为 UserDocument 对象创建公有属性。在创建公有属性时,需要公开该属性,使其它的应用程序能够设置或得到它的属性值。在 ActXDoc 工程中,将创建一个属性,它能够被其它 ActiveX 文档或窗体访问。在这里,还将向工程中添加一个代码模块,用来包含一个全局模块。
注意 本主题是创建示例 ActiveX 文档的步骤之一。如果要从头开始学习有关的内容,选择“创建 ActiveX 文档”主题。
要为 FirstDoc 添加一个属性
'FirstDoc
的对象变量Public gFirstDoc As FirstDoc
这个全局对象将包含一个对象引用,用来链接 FirstDoc 和 SecndDoc ActiveX 文档。
Text1 属性名称 | 属性值 |
Name | txtFirstDoc |
Text | (nothing) |
Public Property Get strDocProp() As String '
注意:在上一行中,将返回值的类型属性'
从"As Variant"
改为'
“As String
”。strDocProp = txtFirstDoc.Text
End Property
Public Property Let strDocProp(ByVal _
NewStrDocProp As String)
'
注意:在上一行中,'
将参数类型从Variant
类型改为String
类型。txtFirstDoc.Text = NewStrDocProp
End Property
上面的代码将 strDocProp 公开为 FirstDoc ActiveX 文档的公有属性。换言之,它将字符串的显示与存储的任务委托给 TextBox 控件的 Text 属性。既然该属性是一个公有属性,就可以把它的值传递给 SecndDoc 对象。这只需修改“到下一个”按钮的代码即可。
Private Sub cmdGoNext_Click() '
注意:下面提供的路径不一定对应于'
文件SecndDoc.vbd
在机器上的实际路径Set gFirstDoc = Me ' <--
加入这一行。HyperLink.NavigateTo _
App.Path & "\SecndDoc.vbd"
End Sub
Private Sub UserDocument_Show()
If Not gFirstDoc Is Nothing Then
lblCaption.Caption = gFirstDoc.strDocProp
Set gFirstDoc = Nothing
End If
End Sub
在第 11 步的代码中,我们把全局对象变量设置为 FirstDoc 文档。第 13 步的代码测试该全局变量是否被设置为一个对象。如果已设置,那么可以使用 ActiveX 文档的公有属性,标签的标题将被设置为 FirstDoc 文档的 strDocProp 属性值。在设置 Caption 属性之后,全局变量被破坏(设置为 Nothing)。
注意 使用全局变量保存对 FirstDoc UserDocument 的引用是非常糟糕的做法;“建立 ActiveX 文档”对此进行了解释。
本主题为示例 ActiveX 文档创建过程中的步骤之一。
要 | 请参阅 |
到下一步 | “将属性保存到 PropertyBag 中” |
从头开始 | “创建 ActiveX 文档” |