如何创建“自定义类型”的集合对象?

chenbian23 2004-05-06 10:42:59
请问各位朋友:如何创建“自定义类型”的集合对象?希望能举例说明!
例如有如下自定义类型:
Type U_USER '含有如下成员
ID As String '用户ID号码
NAME As String '用户姓名
Age As Long '用户年龄
End Type
如何在一个窗体中创建一个相应的“自定义类型”集合——Collection?如何创建相应的AddItem、RemoveItem等方法,如何将所创建的自定义集合传递到下一窗体模块中?最好详细说明。
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangxiaosan001 2004-05-09
  • 打赏
  • 举报
回复
我也谢谢了。
chenbian23 2004-05-09
  • 打赏
  • 举报
回复
看了northwolves(野性的呼唤)的回答我明白了这个问题。多谢参与答题者
AresChen 2004-05-07
  • 打赏
  • 举报
回复
大致方法如下,剩下的你自己琢磨吧:
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设置成隐含的等。
broown 2004-05-07
  • 打赏
  • 举报
回复
搞个结构行吗?
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

northwolves 2004-05-07
  • 打赏
  • 举报
回复
创建类模块:

USER.CLS:

Option Explicit

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


For I = 1 To 20
u_user.ADD Chr(I + 64)
u_user.ITEM(Chr(I + 64)).id = Format(I, "0000")
u_user.ITEM(Chr(I + 64)).age = Int(Rnd * 100)
Debug.Print "ID:" & u_user.ITEM(Chr(I + 64)).id
Debug.Print "NAME:" & u_user.ITEM(Chr(I + 64)).name
Debug.Print "AGE:" & u_user.ITEM(Chr(I + 64)).age
Debug.Print ""
Next
MsgBox u_user.COUNT

u_user.REMOVE ("C")
u_user.REMOVE ("D")

MsgBox u_user.COUNT
End Sub

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧