Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Ishodniki.Ru » Online книги » Visual Basic по шагам

Шаг 26 - Коллекция объектов

В любом случае Ваши объекты подчинены некоторой иерархии. Например, у вас может быть много объектов автомобилей, которые находятся в гараже.

gif/26_1.gif (573 b)

Так же в приложении Excel, есть много листов, в базе данных много таблиц. В общем можно сказать, что у нас могут быть наборы объектов с одинаковой функциональностью. Объекты, которые содержат в себе однотипные объекты назваются коллекциями (Collection). В данном случае можно сказать, что гараж - это коллекция. Создавать коллекцию удобно используя ClassWizard. В нем есть специальная кнопка для реализации данной возможности.

gif/26_2.gif (3251 b)

Давайте создадим новый проект ActiveX DLL вот с такой структурой:

gif/26_3.gif (1175 b)

И вызовем Class Builder, нажав на кнопку AddNewCollection. Здесь нам нужно будет указать имя коллекции и класс, который будет в эту коллекцию входить.

gif/26_4.gif (5470 b)

После нажатия на OK вы увидите изменения в окне Class Builder.

gif/26_5.gif (2862 b)

После обновления проекта Class Builder сформирует весь необходимый код в новом классе коллекции.

gif/26_6.gif (1523 b)

'local variable to hold collection

Private mCol As Collection



Public Function Add(Optional sKey As String) As ClassAuto

    'create a new object

    Dim objNewMember As ClassAuto

    Set objNewMember = New ClassAuto



    'set the properties passed into the method

    If Len(sKey) = 0 Then

        mCol.Add objNewMember

    Else

        mCol.Add objNewMember, sKey

    End If



    'return the object created

    Set Add = objNewMember

    Set objNewMember = Nothing

End Function



Public Property Get Item(vntIndexKey As Variant) As ClassAuto

    'used when referencing an element in the collection

    'vntIndexKey contains either the Index or Key to the collection,

    'this is why it is declared as a Variant

    'Syntax: Set foo = x.Item(xyz) or Set foo = x.Item(5)

  Set Item = mCol(vntIndexKey)

End Property



Public Property Get Count() As Long

    'used when retrieving the number of elements in the

    'collection. Syntax: Debug.Print x.Count

    Count = mCol.Count

End Property



Public Sub Remove(vntIndexKey As Variant)

    'used when removing an element from the collection

    'vntIndexKey contains either the Index or Key, which is why

    'it is declared as a Variant

    'Syntax: x.Remove(xyz)

    mCol.Remove vntIndexKey

End Sub



Public Property Get NewEnum() As IUnknown

    'this property allows you to enumerate

    'this collection with the For...Each syntax

    Set NewEnum = mCol.[_NewEnum]

End Property



Private Sub Class_Initialize()

    'creates the collection when this class is created

    Set mCol = New Collection

End Sub



Private Sub Class_Terminate()

    'destroys collection when this class is terminated

    Set mCol = Nothing

End Sub

Обратите внимание, что была создана внутренняя переменная типа Collection и функция для доступа к ней. Естественно, что все это можно было написать и руками, но все же.

 

Предыдущий шаг | Оглавление | Следующий шаг

Рассылка новостей
Кафе на автозаводской: главная авлабар сказочный ресторан на автозаводской.
Рейтинги
© 2007, Программирование Исходники.Ру