请问各位朋友:如何创建“自定义类型”的集合对象?希望能举例说明!
例如有如下自定义类型:
Type U_USER '含有如下成员
ID As String '用户ID号码
NAME As String '用户姓名
Age As Long '用户年龄
End Type
如何在一个窗体中创建一个相应的“自定义类型”集合——Collection?如何创建相应的AddItem、RemoveItem等方法,如何将所创建的自定义集合传递到下一窗体模块中?最好详细说明。
...全文
1455打赏收藏
如何创建“自定义类型”的集合对象?
请问各位朋友:如何创建“自定义类型”的集合对象?希望能举例说明! 例如有如下自定义类型: Type U_USER '含有如下成员 ID As String '用户ID号码 NAME As String '用户姓名 Age As Long '用户年龄 End Type 如何在一个窗体中创建一个相应的“自定义类型”集合——Collection?如何创建相应的AddItem、RemoveItem等方法,如何将所创建的自定义集合传递到下一窗体模块中?最好详细说明。
大致方法如下,剩下的你自己琢磨吧:
1,建立一个类,比如叫Student,给他加上一些属性和方法,比如Name、Sex、Age、ID
2,在建立一个类,比如叫oClass,加上这几个属性:Count、Item,在加上Add、Remove、_NewEnum这几个方法
oClass大致的定义是这样的
dim mCol as Collection
public function Add(byval StudentName as string,byval StudentID as String,optional sKey as String) as Student
dim obj as Student
set obj=new Student
obj.Name=StudentName
obj.ID=StudentID
if sKey<>"" then
mcol.add obj,skey
else
mcol.add obj
end if
set Add=obj
set obj=nothing
end function
其他写法类似。
3,通过菜单中的工具-->过程属性来设置oClass中的一些属性,比如把Item设置成缺省的,把_NewEnum设置成隐含的等。
搞个结构行吗?
Type EmployeeRecord '创建用户自定义的类型。
ID As Integer '定义元素的数据类型。
Name As String * 20
Address As String * 30
Phone As Long
HireDate As Date
End Type
Sub CreateRecord()
Dim MyRecord As EmployeeRecord
'对 EmployeeRecord 变量的赋值必须在过程内进行。
MyRecord.ID = 12003 '给一个元素赋值。
End Sub
Public id As String
Public name As String
Public age As Long
ALLUSER.CLS:
Option Explicit
Private USERS As New Collection
Public Function ADD(STRNAME As String) As USER
Dim NEWUSER As New USER
NEWUSER.name = STRNAME
USERS.ADD NEWUSER, STRNAME
Set ADD = NEWUSER
End Function
Public Sub REMOVE(STRNAME As String)
USERS.REMOVE STRNAME
End Sub
Public Function COUNT() As Long
COUNT = USERS.COUNT
End Function
Public Function ITEM(STRNAME As String) As USER
Set ITEM = USERS.ITEM(STRNAME)
End Function
FORM1:
Option Explicit
Private Sub Command1_Click()
Dim u_user As New ALLUSER, I As Long