'VB:Collection (集合)对象示例
'━━━━━━━━━━━━━━━━━━━━━━━━━━
'本示例建立一个命名为 MyClasses 的 Collection 对象,再建立一个对话框,让用户可从对话框中将对象建立到该集合对象中。
'若要观察程序如何工作,请先在“插入”菜单上选择“类模块”命令,然后在 Class1 的模块级中声明一个公用变量,
'命名为 InstanceName(类型为 Public InstanceName),此变量用来保存每个类实例的名称。不要更改类的缺省名称 Class1。
'将下列代码复制到另一个模块的“通用”节中,然后在另一个过程中用 ClassNamer 语句使它启动激活。
'(本示例仅使用支持类的主机应用程序。)
Sub ClassNamer()
Dim MyClasses As New Collection ' 建立一个集合对象(Collection)。
Dim Num ' 计数用变量,用来对对象的个数计数。
Dim Msg As String ' 提示信息用变量。
Dim TheName, MyObject, NameList ' 对象信息用变体。
Do
Dim Inst As New Class1 ' 建立 Class1 的新实例。
Num = Num + 1 ' 把计数变量 Num 加一,然后要求输入新对象个体的名称。
Msg = "Please enter a name for this object. " & Chr (13) & "Press Cancel to see names in collection. "
TheName = InputBox (Msg, "Name the Collection Items " )
Inst.InstanceName = TheName ' 将名称送入对象实例。
If Inst.InstanceName <> " " Then ' 若用户输入了名称,将它加入集合。
MyClasses.Add Item:=Inst, Key:= CStr (Num) ' 将命名的对象加入集合。
End If
Set Inst = Nothing ' 清除当前的引用,为对下一个对象做准备。
Loop Until TheName = " "
For Each MyObject In MyClasses ' 建立名称列表。
NameList = NameList & MyObject.InstanceName & Chr (13)
Next MyObject
MsgBox NameList, , "Instance Names In MyClasses Collection " ' 将名称列表在消息框中显示出来。
For Num = 1 To MyClasses.Count ' 从集合中删除名字。
MyClasses.Remove 1 ' 每删除一个对象后,集合会自动重排顺序,故每次迭代时只需删除第一个对象即可。
Next
End Sub
'━━━━━━━━━━━━━━━━━━━━━━━━━━
'本示例建立一个命名为 MyClasses 的 Collection 对象,再建立一个对话框,让用户可从对话框中将对象建立到该集合对象中。
'若要观察程序如何工作,请先在“插入”菜单上选择“类模块”命令,然后在 Class1 的模块级中声明一个公用变量,
'命名为 InstanceName(类型为 Public InstanceName),此变量用来保存每个类实例的名称。不要更改类的缺省名称 Class1。
'将下列代码复制到另一个模块的“通用”节中,然后在另一个过程中用 ClassNamer 语句使它启动激活。
'(本示例仅使用支持类的主机应用程序。)
Sub ClassNamer()
Dim MyClasses As New Collection ' 建立一个集合对象(Collection)。
Dim Num ' 计数用变量,用来对对象的个数计数。
Dim Msg As String ' 提示信息用变量。
Dim TheName, MyObject, NameList ' 对象信息用变体。
Do
Dim Inst As New Class1 ' 建立 Class1 的新实例。
Num = Num + 1 ' 把计数变量 Num 加一,然后要求输入新对象个体的名称。
Msg = "Please enter a name for this object. " & Chr (13) & "Press Cancel to see names in collection. "
TheName = InputBox (Msg, "Name the Collection Items " )
Inst.InstanceName = TheName ' 将名称送入对象实例。
If Inst.InstanceName <> " " Then ' 若用户输入了名称,将它加入集合。
MyClasses.Add Item:=Inst, Key:= CStr (Num) ' 将命名的对象加入集合。
End If
Set Inst = Nothing ' 清除当前的引用,为对下一个对象做准备。
Loop Until TheName = " "
For Each MyObject In MyClasses ' 建立名称列表。
NameList = NameList & MyObject.InstanceName & Chr (13)
Next MyObject
MsgBox NameList, , "Instance Names In MyClasses Collection " ' 将名称列表在消息框中显示出来。
For Num = 1 To MyClasses.Count ' 从集合中删除名字。
MyClasses.Remove 1 ' 每删除一个对象后,集合会自动重排顺序,故每次迭代时只需删除第一个对象即可。
Next
End Sub