|
下面是我在 程序太平洋网站回答透明蟑螂总版主关于在 vb 中如何实现队列的答案.
在 access 中也可以用同样的方式实现,有兴趣的网友可以参考一下:
没办法,在 vb 中实现队列就是麻烦一些
做了一个例子,不知道是不是你所需要的:
'******************************************
'以下为类 clsQueue:
Option Explicit
Public Name As String
Public ID As Long
'******************************************
'以下为类 clsQueues:
Option Explicit
Private mcolQueues As New Collection
Private mlngLastID As Long '最后一个进入对象的 id(即最大ID)
Private mlngFirstID As Long '最先一个对象的id(即最小的id)
Public Function Add(Name As String) As clsQueue
Dim NewQueue As New clsQueue
NewQueue.Name = Name
NewQueue.ID = mlngLastID
mcolQueues.Add NewQueue, LTrim(Str(mlngLastID))
mlngLastID = mlngLastID + 1
End Function
Public Sub Remove(ID As Long)
mcolQueues.Remove LTrim(Str(ID))
End Sub
Public Function Item(ID As Long) As clsQueue
Set Item = mcolQueues.Item(LTrim(Str(ID)))
End Function
Public Function Count() As Long
Count = mcolQueues.Count
End Function
Public Function Pop() As String
Dim Queue As clsQueue
Dim strID As String
If mcolQueues.Count = 0 Then Exit Function
strID = LTrim(Str(mlngFirstID))
Set Queue = mcolQueues.Item(t)
Pop = Queue.Name
mcolQueues.Remove LTrim(Str(mlngFirstID))
mlngFirstID = mlngFirstID + 1
End Function
Public Function NewEnum() As IUnknown
Set NewEnum = mcolEmployees.[_NewEnum]
End Function
'******************************************
'以下为类 clsGQueue:
Option Explicit
Private mclsQueues As New clsQueues
Public Property Get clsQueues() As clsQueues
Set clsQueues = mclsQueues
End Property
'**************************
'在窗体或其它模块中这样使用:
声明变量
private Queue as new clsGQueue
加入一个新对象到类中:
queue.clsQueues.Add "...."
取出一个对象(先进行出):
str变量名=queue.clsqueues.Pop
可以使用 for exch 遍历队列(集合)
可以使用 item 方法取出指定 id 的对象,
可以使用 remove 方法删除指定对象,但使用此方法后, pop 方法可能会出问题.
可以使用 count 方法得到集合中总 item 数量.
因为是示例,未加上出错处理部分.并且队列中存储的文本值,你可以按自己的要求更改.
程序太平洋的相应网页:
http://www.5ivb.net/club/dispbbs.asp?boardid=1&id=14962&star=1#36547 |
|