На этом шаге мы рассмотрим компонент TComboBoxEx.
Компонент TComboBoxEx (Расширенный список) впервые введен в версии 6. По сравнению с рассмотренным компонентом TComboBox, он позволяет снабжать пункты (элементы) списка небольшими изображениями, а также регулирует отступ каждого элемента от левого края списка.
Большая часть свойств, методов и событий компонентов TComboBoxEx и TComboBox совпадают. Специфические свойства описаны в таблице.
Свойство | Описание |
---|---|
property Images: TCustomImageList; | Содержит ссылку на объект-хранилище изображений |
property ItemsEx: TComboExItems; | Содержит ссылку на объект класса TComboExItems |
Объект класса TComboExItems содержит всю необходимую информацию о списке в целом. Свойства этого класса представлены в таблице.
Свойство | Описание |
---|---|
property CaseSensitive: Boolean; | Определяет, будут ли учитываться регистр букв при сортировке строк |
property Count: Integer; | Содержит количество строк в списке |
property ComboItems[const Index: Integer]: TComboExItem; | Открывает индексированный доступ к объектам класса TComboExItem, в которых хранится информация о каждом элементе списка |
property SortType: TSortType; | Определяет способ сортировки элементов:
|
Если для списка указан тип сортировки stText, строки списка сортируются немедленно. Если указан тип stData или stBoth, сортировка осуществляется в обработчике события TComboExItems.OnCompare.
В объектах класса TComboExItem хранится вся информация о каждом элементе списка. Этот класс имеет собственные свойства.
Свойство | Описание |
---|---|
property Caption: String; | Текст элемента списка |
property Data: Pointer; | Указатель на связанный с элементом произвольный обект |
property ImageIndex: TImageIndex; | Индекс связанного с элементом изображения в раскрытом списке |
property Indent: Integer; | Смещение элемента от правого края листа |
property OverlayImageIndex: TImageIndex; | Определяет индекс маски, накладываемой на изображения ImageIndex и SelectedImageIndex |
property SelectedImageIndex: TImageIndex; | Индекс изображения для выбранного элемента списка |
У класса TComboExItems есть собственные методы и события, управляющие списком в целом.
Метод | Описание |
---|---|
function Add: TComboExItem; | Добавляет к списку новый элемент |
function AddItem(const Caption: String; const ImageIndex, SelectedImageIndex, OverlayImageIndex, Indent: Integer; Data: Pointer): TComboExItem; | Добавляет к списку новый элемент и инициализирует его свойства |
function Insert(Index: Integer): TComboExItem; | Вставляет в указанную позицию списка новый элемент |
procedure CustomSort(Compare: TListItemsCompare); | Сортирует элементы с помощью функции Compare |
procedure Sort; | Сортирует элементы с помощью обработчика события OnCompare |
Помимо перечисленных в таблице, в классе определены также типичные для любой коллекции методы: Assign, Clear, Delete и т. д. Для класса определено единственное событие:
type TListCompareEvent = function (List: TListControlItems; Item1, Item2: TListControlItem) : Integer of object; property OnCompare: TListCompareEvent;
Это событие возникает, если в качестве типа сортировки выбрано значение stData или stBoth. Обработчик должен проанализировать два элемента и вернуть -1,0 или +1, если соответственно первый элемент меньше, равен или больше второго.
Методы компонента TComboBoxEx.
Метод | Описание |
---|---|
procedure AddItem (Item: String; AObject: TObject); | Добавляет новый элемент и связанные с ним данные |
procedure Clear; override; | Очищает список |
procedure ClearSelection; override; | Проверяет, выделен ли какой-то элемент списка и, если так, снимает выделение (помещает -1 в свойство ItemIndex и очищает свойство Text) |
procedure CopySelection (Destination: TCustomListControl); override; | Проверяет, выделен ли какой-то элемент списка и, если так, копирует его в список Destination |
procedure DeleteSelected; override; | Проверяет, выделен ли какой-то элемент списка и, если так, удаляет его из списка |
function Focused: Boolean; override; | Возвращает значение True, если компонент имеет фокус ввода |
procedure MoveSelection(Destination: TCustomListControl); virtual; | Проверяет, выделен ли какой-то элемент списка и, если так, копирует его в список Destination и затем удаляет |
procedure SelectAll; override; | Выделяет весь текст выбранного элемента. Чтобы выделить часть текста, используйте свойства SelStart и SelLength |
События компонента TComboBoxEx.
Событие | Описание |
---|---|
property OnBeginEdit: TNotifyEvent; | Возникает, когда пользователь начинает изменять текст в поле списка |
property OnChange: TNotifyEvent; | Возникает при каждом изменении пользователем (но не программой!) свойства Text |
property OnDropDown: TNotifyEvent; | Возникает в момент раскрытия списка |
property OnEndEdit: TNotifyEvent; | Возникает, когда пользователь заканчивает изменять текст в поле списка |
property OnSelect: TNotifyEvent; | Возникает, когда пользователь выделяет элемент списка |