Please visit our sponsor
UNKNOWN
'**************************************
' Name: CollectionPlus ! (See VERSION 2)
'
' Description:'In replacement of existin
' g Collection in VB
'SEE MY NEW VERSION !
' By: Rick
'
'
' Inputs:'Same as Collection
'
' Returns:'Same as Collection with mores
' Subs and Property
'
'Assumes:'CollectionPlus his based on ex
' isting Collection, but you can ask quest
' ion like
'ifKeyIsThere ou ifItemIsThere , returns
' True or False.
'A Public Event Error is available.
'It's a very simple code but useful !
'In my next version i'm gonna handle Ite
' m,Key and Group
'so after you can mix that CollectionPlu
' sB with ListBox or other Control.
'
'Side Effects:'None
'This code is copyrighted and has limite
' d warranties.
'Please see http://www.Planet-Source-Cod
' e.com/xq/ASP/txtCodeId.1899/lngWId.1/qx/
' vb/scripts/ShowCode.htm
'for details.
'**************************************
'***************************************
' ************************
' CLASS
'***************************************
' ************************
'SEE MY NEW VERSION
'Create a New Class and name it Collecti
' onPlus (optional)
'Copy/Paste the following Code
'Creer une nouvelle Class et nommez-la C
' ollectionPlus
'Copier/Coller toutes les prochaines lig
' nes
Option Explicit
Dim theCollection As New Collection
Private m_Delim As String
Const DefaultDelim As String = ","
Public Event Erreur(ByVal FunctionName As String, ByVal Number As Long, ByVal Description As String, ByVal DataError As String)
Private Sub Class_Initialize()
m_Delim = DefaultDelim
End Sub
Private Sub Class_Terminate()
Set theCollection = Nothing
End Sub
Public Sub Add(Item As Variant, Optional ByVal Key As Variant, Optional ByVal Before As Variant, Optional ByVal After As Variant)
On Error GoTo err_Occur
theCollection.Add Item, Key, Before, After
On Error GoTo 0
err_Continu:
Exit Sub
err_Occur:
RaiseEvent Erreur("Add", Err.Number, Err.Description, "")
Resume err_Continu
End Sub
Public Sub RemoveKey(ByVal Key As String)
On Error GoTo err_Occur
theCollection.Remove Key
On Error GoTo 0
err_Continu:
Exit Sub
err_Occur:
RaiseEvent Erreur("RemoveKey", Err.Number, Err.Description, Key)
Resume err_Continu
End Sub
Public Sub Remove(ByVal IndexOrKey As Variant)
On Error GoTo err_Occur
theCollection.Remove IndexOrKey
On Error GoTo 0
err_Continu:
Exit Sub
err_Occur:
RaiseEvent Erreur("Remove", Err.Number, Err.Description, IndexOrKey)
Resume err_Continu
End Sub
Public Sub RemoveIndex(ByVal Index As Long)
On Error GoTo err_Occur
If Index <= theCollection.Count Then
theCollection.Remove Index
Else
RaiseEvent Erreur("RemoveIndex", 9, "Subscript out of range, Max=" + CStr(theCollection.Count), Index)
End If
On Error GoTo 0
err_Continu:
Exit Sub
err_Occur:
MsgBox Err.Number
RaiseEvent Erreur("RemoveIndex", Err.Number, Err.Description, Index)
Resume err_Continu
End Sub
Public Sub RemoveAll()
If theCollection.Count = 0 Then Exit Sub
Dim element As Variant
For Each element In theCollection
theCollection.Remove 1
Next element
End Sub
Public Property Get Count() As Long
On Error GoTo err_Occur
Count = theCollection.Count
On Error GoTo 0
err_Continu:
Exit Function
err_Occur:
RaiseEvent Erreur("Count", Err.Number, Err.Description, "")
Resume err_Continu
End Property
Public Function Item(ByVal IndexOrKey As Variant) As Variant
On Error GoTo err_Occur
Item = theCollection.Item(IndexOrKey)
On Error GoTo 0
err_Continu:
Exit Function
err_Occur:
RaiseEvent Erreur("Item", Err.Number, Err.Description, IndexOrKey)
Resume err_Continu
End Function
Public Function IfItemIsThere(ByVal Index As Long) As Boolean
Dim temp As Variant
On Error GoTo err_Occur
temp = theCollection.Item(Index)
On Error GoTo 0
IfItemIsThere = True
err_Continu:
Exit Function
err_Occur:
IfItemIsThere = False
Resume err_Continu
End Function
Public Function IfKeyIsThere(ByVal Key As String) As Boolean
Dim temp As Variant
On Error GoTo err_Occur
temp = theCollection.Item(Key)
On Error GoTo 0
IfKeyIsThere = True
err_Continu:
Exit Function
err_Occur:
IfKeyIsThere = False
Resume err_Continu
End Function
Public Property Get DelimStringDataError() As String
DelimStringDataError = m_Delim
End Property
Public Property Let DelimStringDataError(ByVal NewDelim As String)
m_Delim = NewDelim
End Property
'***************************************
' ************************
' FORM
'***************************************
' ************************
'Copy/Paste this lines in a Form called
' frmMain
'Copier/Coller ces lignes dans une Form
' nommer frmMain
Option Explicit
'The Declaration for Handle the Error Ev
' ent of Collection Plus
Dim WithEvents myCol As CollectionPlus
Private Sub Form_Load()
'Initialize Collection
Set myCol = New CollectionPlus
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set myCol = Nothing
Set frmMain = Nothing
End
End Sub
Private Sub cmdTestCol_Click()
'The Add,Item,Remove and Count are same
' as Collection
myCol.Add "My Item", "My Key" ' ,"Before Key","After Key" [Optional]
myCol.Add "Second"
'Verify my Items
MsgBox "Have Item 1 : " + CStr(myCol.IfItemIsThere(1)) + vbCrLf + vbCrLf + _
"Have Key 'My Key' : " + CStr(myCol.IfKeyIsThere("My Key")) + vbCrLf + vbCrLf + _
"Have Item 3 : " + CStr(myCol.IfItemIsThere(3)), _
vbInformation + vbSystemModal, "CollectionPlus"
'An Error Event Occur (without Crash !)
myCol.Remove 5
'This gonna Delete "Second" (Like Collec
' tion)
myCol.RemoveKey ""
'Get Count
MsgBox "Collection Count: " + CStr(myCol.Count), vbInformation + vbSystemModal, "CollectionPlus"
'Now Remove All Items
myCol.RemoveAll
End Sub
'Error Event of CollectionPlus
Private Sub myCol_Erreur(ByVal FunctionName As String, ByVal Number As Long, ByVal Description As String, ByVal DataError As String)
MsgBox "FunctionName: " + FunctionName + vbCrLf + "Number: " + CStr(Number) + vbCrLf + _
"Description: " + Description + vbCrLf + "DataError: " + DataError, _
vbInformation + vbSystemModal, "Error Event CollectionPlus !"
End Sub