Вкладка 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;Возникает, когда пользователь выделяет элемент списка


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

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