Коллекции объектов широко используются в компонентах VCL. Например, панели компонента TCoolBar (см. гл. 5) объединены в коллекцию. Класс TCoolBands, объединяющий панели, является наследником класса TCollection. А отдельная панель - экземпляром класса TCooiBar, происходящего от класса TCoUectionltem.

Поэтому знание свойств и методов классов коллекции позволит успешно использовать их при работе со многими компонентами (TDBGrid, TListview,

TStatusBar, TCooiBar И Т. Д.).

Для работы с коллекцией, независимо от инкапсулирующего ее компонента, применяется специализированный Редактор коллекции (рис. 7.1), набор

Программирование в Delphi 7

Рис. 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

Объявление

Описание

property Count: Integer;

Возвращает число элементов

коллекции

type TcollectionltemClass = class of

Возвращает класс-наследник

TCollectionltem;

TCollectionltem, экземпляры

property itemClass: TcollectionltemClass;

которого собраны в коллекции

property Items [index: Integer]:

Коллекция экземпляров класса

TCollectionltem;
function Add: TCollectionltem;

Добавляет к коллекции новый

экземпляр класса

procedure Assign (Source: TPersistent) ;

Копирует коллекцию из объекта

override;

Source в данный объект

Таблица 7.3( окончание)

Объявление

Описание

procedure BeginUpdate;
virtual;

Отменяет перерисовку коллекции. Используется при внесении изменений в коллекцию

procedure Clear;

Удаляет из коллекции все элементы

procedure EndUpdate;
virtual;

Отменяет действие метода

function FindltemID(ID: Integer): TCoiiectionitem;

Возвращает объект коллекции с номером Ю

function GetNamePath: string; override; Возвращает имя класса коллекции во время выполнения, если коллекция не имеет владельца. Иначе возвращает название свойства класса, владеющего коллекцией

function Insert (Index: Integer): Tcollectionltem;

Вставляет в коллекцию новый объект на место с номером Index

Класс TCoiiectionitem

Класс ТСопесйопкет инкапсулирует основные свойства и методы элемента коллекции (табл. 7.4). Свойства класса обеспечивают хранение информации о расположении элемента в коллекции.

Таблица 7.4.

Свойства и методы класса ТСоИесИопИет

Объявление

Описание

property Collection: Tcollection;

Содержит экземпляр класса коллекции, которой принадлежит данный элемент

property DisplayName: string;

Содержит имя элемента, которое представляет его в Редакторе коллекции

property ID: Integer;

Содержит уникальный номер элемента в коллекции, который не может изменяться

property Index: Integer;

Содержит порядковый номер элемента в коллекции. Он соответствует положению элемента в списке и может изменяться

Резюме


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Август
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс