VB6のコレクションクラス
備忘のためのメモです。
■ コレクションクラス
'コレクションを保持するローカル変数
Private mCol As Collection
Public Function Add(Key As String, sName As Variant, Optional sKey As String) As System
'新規オブジェクトを作成します。
Dim objNewMember As System
Set objNewMember = New System
'メソッドに渡すプロパティを設定します。
objNewMember.Key = Key
If IsObject(sName) Then
Set objNewMember.sName = sName
Else
objNewMember.sName = sName
End If
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
'作成されたオブジェクトを返します。
Set Add = objNewMember
Set objNewMember = Nothing
End Function
Public Property Get Item(vntIndexKey As Variant) As System
'コレクションの要素を参照するときに使用します。
'vntIndexKey は インデックスまたはキーのどちらかを
'保持するために Variant で宣言されています。
'構文: Set foo = x.Item(xyz) または Set foo = x.Item(5)
Set Item = mCol(vntIndexKey)
End Property
Public Property Get Count() As Long
'コレクションの要素数を取得するときに使用します。
'構文: Debug.Print x.Count
Count = mCol.Count
End Property
Public Sub Remove(vntIndexKey As Variant)
'コレクションから要素を削除するときに使用します。
'vntIndexKey は インデックスまたはキーのどちらかを
'保持するために Variant で宣言されています。
'構文: x.Remove(xyz)
mCol.Remove vntIndexKey
End Sub
Public Property Get NewEnum() As IUnknown
'このプロパティは、For...Each 構文を使用して
'コレクションを列挙できるようにします。
Set NewEnum = mCol.[_NewEnum]
End Property
Private Sub Class_Initialize()
'このクラスが作成されたときに、コレクションを作成します。
Set mCol = New Collection
End Sub
Private Sub Class_Terminate()
'このクラスが終了するときに、コレクションを破棄します。
Set mCol = Nothing
End Sub
■コレクションメンバクラス
Public Key As String
Public sName As Variant