Коллекции объектов широко используются в компонентах VCL. Например, панели компонента TCoolBar (см. гл. 5) объединены в коллекцию. Класс TCoolBands, объединяющий панели, является наследником класса TCollection. А отдельная панель - экземпляром класса TCooiBar, происходящего от класса TCoUectionltem.
Поэтому знание свойств и методов классов коллекции позволит успешно использовать их при работе со многими компонентами (TDBGrid, TListview,
TStatusBar, TCooiBar И Т. Д.).
Для работы с коллекцией, независимо от инкапсулирующего ее компонента, применяется специализированный Редактор коллекции (рис. 7.1), набор
Рис. 7.1. Редактор коллекции элементов управления которого может немного изменяться для разных компонентов.
Список Редактора объединяет элементы коллекции. При выборе одной строки из списка свойства объекта коллекции становятся доступны в Инспекторе объектов. В список можно добавлять новые элементы и удалять существующие, а также менять их взаимное положение.
Примеры использования коллекций представлены при описании соответствующих компонентов.
Класс TCollection
Класс TCollection является оболочкой коллекции, обеспечивая разработчика набором свойств и методов для управления ею (табл. 7.3).
Сама коллекция содержится в свойстве
property Items [Index: Integer]: TCollectionltem;
Полное объявление свойства в классе выглядит следующим образом:
praparty Items [Index: Integer] : TCollecticnltem read Getltem write Setltem;
Методы Getltem и Setltem обращаются к внутреннему полю Fltems: FItems: TList;
Именно оно хранит коллекцию объектов во время выполнения. Отсюда следует, что коллекция представляет собой список указателей на экземпляры класса TCollectionltem или его наследника. Класс TCollection обеспечивает удобство использования элементов списка.
Таблица 7.3. Свойства и методы класса TCollection
Объявление |
Описание |
|
Возвращает число элементов |
коллекции |
|
type TcollectionltemClass = class of |
Возвращает класс-наследник |
|
TCollectionltem, экземпляры |
|
которого собраны в коллекции |
property Items [index: Integer]: |
Коллекция экземпляров класса |
|
|
|
Добавляет к коллекции новый |
экземпляр класса |
|
|
Копирует коллекцию из объекта |
|
Source в данный объект |
Таблица 7.3( окончание) |
|
Объявление |
Описание |
|
Отменяет перерисовку коллекции. Используется при внесении изменений в коллекцию |
|
Удаляет из коллекции все элементы |
|
Отменяет действие метода |
|
Возвращает объект коллекции с номером Ю |
function GetNamePath: string; override; Возвращает имя класса коллекции во время выполнения, если коллекция не имеет владельца. Иначе возвращает название свойства класса, владеющего коллекцией |
|
|
Вставляет в коллекцию новый объект на место с номером Index |
Класс TCoiiectionitem |
|
Класс ТСопесйопкет инкапсулирует основные свойства и методы элемента коллекции (табл. 7.4). Свойства класса обеспечивают хранение информации о расположении элемента в коллекции. |
|
Таблица 7.4. |
Свойства и методы класса ТСоИесИопИет |
Объявление |
Описание |
|
Содержит экземпляр класса коллекции, которой принадлежит данный элемент |
|
Содержит имя элемента, которое представляет его в Редакторе коллекции |
|
Содержит уникальный номер элемента в коллекции, который не может изменяться |
|
Содержит порядковый номер элемента в коллекции. Он соответствует положению элемента в списке и может изменяться |
Резюме