Вкладка Win32. Компонент TComboBoxEx

   
На этом шаге мы рассмотрим компонент TComboBoxEx.

   
Компонент TComboBoxEx (Расширенный список) впервые введен в версии 6. По сравнению с
рассмотренным компонентом TComboBox, он позволяет снабжать пункты (элементы) списка небольшими
изображениями, а также регулирует отступ каждого элемента от левого края списка.

   
Большая часть свойств, методов и событий компонентов TComboBoxEx и TComboBox совпадают.
Специфические свойства описаны в таблице.

Таблица 1. Свойства компонента TComboBoxEx

Свойство Описание
property Images: TCustomImageList; Содержит ссылку на объект-хранилище изображений
property ItemsEx: TComboExItems; Содержит ссылку на объект класса TComboExItems

   
Объект класса TComboExItems содержит всю необходимую информацию о списке в целом. Свойства этого
класса представлены в таблице.

   

Таблица 2. Свойства класса TComboExItems

Свойство Описание
property CaseSensitive: Boolean; Определяет, будут ли учитываться регистр букв при сортировке строк
property Count: Integer; Содержит количество строк в списке
property ComboItems[const Index: Integer]: TComboExItem; Открывает индексированный доступ к объектам класса TComboExItem, в которых хранится
информация о каждом элементе списка
property SortType: TSortType; Определяет способ сортировки элементов:

  • stNone - нет сортировки;
  • stData - по значениям свойства Data;
  • stText - по значениям свойства Caption;
  • stBoth - объединенная сортировка (по значениям обоих свойств).

Свойства Data и Caption представлены ниже в описании класса TComboExItem

   
Если для списка указан тип сортировки stText, строки списка сортируются немедленно. Если указан тип
stData или stBoth, сортировка осуществляется в обработчике события TComboExItems.OnCompare.

   
В объектах класса TComboExItem хранится вся информация о каждом элементе списка. Этот класс имеет
собственные свойства.

   

Таблица 3. Свойства класса TComboExItem

Свойство Описание
property Caption: String; Текст элемента списка
property Data: Pointer; Указатель на связанный с элементом произвольный обект
property ImageIndex: TImageIndex; Индекс связанного с элементом изображения в раскрытом списке
property Indent: Integer; Смещение элемента от правого края листа
property OverlayImageIndex: TImageIndex; Определяет индекс маски, накладываемой на изображения ImageIndex и SelectedImageIndex
property SelectedImageIndex: TImageIndex; Индекс изображения для выбранного элемента списка

   
У класса TComboExItems есть собственные методы и события, управляющие списком в целом.

   

Таблица 4. Методы класса 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.

   

Таблица 5. Методы компонента 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.

Таблица 6. События компонента TComboBoxEx

Событие Описание
property OnBeginEdit: TNotifyEvent; Возникает, когда пользователь начинает изменять текст в поле списка
property OnChange: TNotifyEvent; Возникает при каждом изменении пользователем (но не программой!) свойства Text
property OnDropDown: TNotifyEvent; Возникает в момент раскрытия списка
property OnEndEdit: TNotifyEvent; Возникает, когда пользователь заканчивает изменять текст в поле списка
property OnSelect: TNotifyEvent; Возникает, когда пользователь выделяет элемент списка


Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий