与 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.TextEnd PropertyPublic Property Let strDocProp(ByVal _NewStrDocProp As String)'注意:在上一行中,'将参数类型从Variant类型改为String类型。txtFirstDoc.Text = NewStrDocPropEnd 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 文档” |