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