Основы офисного программирования и язык VBA


Обертывание коллекции VBA - часть 2


Первый параметр Item является обязательным и задает добавляемый элемент. Параметр key - необязателен, он задается, когда элементу ставится в соответствие ключ. Два последних необязательных параметра уточняют позицию вставки, - задают индекс или ключ элемента, перед или после которого добавляется новый элемент. Только один из этих параметров может быть задан. Если не задан ни один, элемент добавляется в конец коллекции. Заметьте, несмотря на внешнее сходство метод AddPerson отличается от метода Add класса Collection. Во-первых, параметр Item будет иметь строго фиксированный тип Личность. Во-вторых, есть различия в реализации. Коллекция будет хранить не ссылку на элемент Item класса Личность, а копию этого элемента.
  • Метод Remove(key) - удаляет элементы коллекции. Удаляется элемент с заданным ключом: заметьте, это может быть индекс элемента. После удаления происходит перенумерация элементов и уменьшается счетчик Count.
  • Метод Item(key) - возвращает значение элемента списка с заданным ключом. И здесь в роли ключа может выступать обычный индекс элемента.
  • Метод PrintList() - печатает элементы списка в его текущем состоянии.
  • Метод PrintHystory - печатает историю создания списка, - все его элементы, даже если они и были удалены впоследствии.
  • Наряду с открытыми свойствами и методами наш класс будет содержать и закрытые свойства и методы:

    1. Свойство First - указатель на начало списка, хранящего элементы коллекции.
    2. Событие Initialize - конструктор по умолчанию, инициализирует список.
    3. Метод AddFirst - создает копии элементов и добавляет их в список, представляющий внутреннюю память коллекции.

    Вот полное описание класса КоллекцияЛичностей, обертывающего класс Collection. Класс сохранил все мощные свойства стандартной коллекции и, к тому же, приобрел новые привлекательные свойства:

    Пример 5.11.

    (html, txt)

    Приведем комментарии к этому тексту:

    1. Прежде всего, следует обратить внимание на то, что объект Persons класса Collection встроен, как свойство, в создаваемый класс. Этот объект инициализируется конструктором по умолчанию, - обработчиком события Initialize в тот момент, когда создается сам объект класса КоллекцияЛичностей.


      Начало  Назад  Вперед



      Книжный магазин