Шаг 4.
Компоненты библиотеки RX.
Вкладка RX DBAware. Компонент TRxDBLookupList

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

    Компонент TRxDBLookupList почти полностью аналогичен стандартному компоненту из VCL TDBLookupList и имеет те же самые свойства, методы и события. Однако у этой компоненты есть некоторые дополнительные возможности и свойства.


Рис.1. Компонент TRxDBLookupList

    TRxDBLookupList позволяет использовать в качестве LookupSource любой источник данных - как TTable, так и TQuery, при этом свойство LookupField не обязательно должно быть индексированным полем. Компонент TRxDBLookupList позволяет также производить поиск нужного термина при наборе первых букв этого термина.

   Компонент также позволяет задать изображения для рисования в левой части каждой строки списка, в зависимости от содержимого полей БД, с помощью события OnGetImage.

   В остальном компонент TRxDBLookupList полностью аналогичен компоненту TDBLookupList.

   При присвоении значений свойству Value или DisplayValue компонент TRxDBLookupCombo или TRxDBLookupList безошибочное позиционирование на соответствующую запись в списке произойдет только в том случае, если соответствующее поле в подмножестве записей, заданном источником данных DataSource, имеет только уникальные неповторяющиеся значения. В противном случае вы получите несколько "выбранных" элементов в списке (причем реально будет выбран только один самый первый), значения полей в которых равны заданному. Избегайте таких ситуаций!

   При работе с некоторыми SQL-серверами БД установка свойств IndexSwitch или IgnoreCase в значение True может приводить к неожиданному поведению компонента. В этом случае постарайтесь добиться "правильного" поведения за счет комбинирования разных значений свойств IgnoreCase и IndexSwitch.

    Рассмотрим свойства данного компонента :

Таблица 1. Свойства компонента TRxDBLookupList.
Свойство Описание
property OnGetImage: TGetImageEvent; Событие позволяет задать картинку (битовое изображение, иконку и т.д.), которая будет изображаеться в левой части строки списка. В обработчике события вы можете определить значение параметра TextMargin , определяющее отступ текста от левого края списка (рекомендуется задавать это значение одинаковым для всех строк списка) и значение параметра Graphic, определяющего изображение для рисования. В обработчике события текущая запись Lookup-набора данных (заданного свойством LookupSource) соотвествует той, для которой вы будете задавать изображение, таким образом вы можете проверить содержимое этой записи и заданнное вами графическое изображение будет зависеть от наполнения полей БД. В компоненте TRxDBLookupCombo имеет смысл параметр события IsEmpty. Если передано значение True, то этот обработчик будет определять картинку для "пустого" значения Value (если задано непустое значение свойства DisplayEmpty), и в этом случае вы не должны обращаться к полям LookupSource.
property IndexSwitch: Boolean; Свойство задает значение DisplayValue в том случае, если никакого выбора не сделано и значение Value равно значению свойства EmptyValue (по умолчанию - пустой строке). В списке отображается дополнительной строкой в верхней части списка с использованием цвета EmptyItemColor и не скролируется (остается всегда видимым и доступным для выбора).
property DisplayEmpty: string; Свойство задает значение DisplayValue в том случае, если никакого выбора не сделано и значение Value равно значению свойства EmptyValue (по умолчанию - пустой строке). В списке отображается дополнительной строкой в верхней части списка с использованием цвета EmptyItemColor и не скролируется (остается всегда видимым и доступным для выбора).
property EmptyValue: string; Свойство задает значение, присвоение которого свойству Value будет восприниматься как присвоение "пустого" значения и приведет к очистке DataField. По умолчанию значение свойства есть пустая строка.
property FieldsDelimiter: Char; Свойство определяет разделитель между полями, отображаемыми в списке, при значении свойства ListStyle = lsDelimited. По умолчанию - запятая (',').
property IgnoreCase: Boolean; Свойство определяет, будет ли учитываться регистр вводимых символов при поиске термина путем набора его первых букв (см. описание компонента TrxDBLookupCombo). True (по умолчанию) - регистр не учитывается.

    Компонент TRxDBLookupList можно связать с таблицей.

   Например, поместим на форму компоненты RxDBGrid1, Table2, DataSource2 – для связи базы данных и таблицы, RxDBLookupList1 (рис.2).


Рис.2. Форма с размещенными на ней компонентами RxDBGrid1, Table2, DataSource2, RxDBLookupList1

    Установим свойство LookupSource компонента RxDBLookupList1 в значение DataSource2, LookupField в значение ‘Код', тогда, выбирая в списке значение, в таблице будет происходить позиционирование на строку, имеющую это значение (рис.3).


Рис.3. Переход на вторую строку компонента RxDBLookupList1

    Текст этого примера можно взять здесь.

    На следующем шаге мы рассмотрим компонент TRxDBLookupCombo.




Предыдущий шаг Содержание Следующий шаг