TRxDBLookupList Component

Unit
RxLookup

Description
Компонента TRxDBLookupList почти полностью аналогична стандартной компоненте из VCL TDBLookupList и имеет те же самые свойства, методы и события. Однако по сравнению с TDBLookupList у этой компоненты есть некоторые дополнительные возможности и свойства.
TRxDBLookupList позволяет использовать в качестве LookupSource любой источник данных — как TTable, так и TQuery, при этом свойство LookupField не обязательно должно быть индексированным полем. Компонента TRxDBLookupList позволяет также производить поиск нужного термина при наборе первых букв этого термина. (См. описание компоненты TRxDBLookupCombo).

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

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

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



Примеры работы и некоторые интересные свойства и методы.

Applies to
TRxLookupEdit, TRxDBLookupList, TRxDBLookupCombo components

Declaration
property OnGetImage: TGetImageEvent;

Description
Событие позволяет задать картинку (битовое изображение, иконку и т.д.), которая будет изображаеться в левой части строки списка. В обработчике события Вы можете определить значение параметра TextMargin, определяющее отступ текста от левого края списка (рекомендуется задавать это значение одинаковым для всех строк списка) и значение параметра Graphic, определяющего изображение для рисования.

В обработчике события текущая запись Lookup-набора данных (заданного свойством LookupSource) соотвествует той, для которой Вы будете задавать изображение, таким образом Вы можете проверить содержимое этой записи и заданнное Вами графическое изображение будет зависеть от наполнения полей БД.
В компоненте TRxDBLookupCombo имеет смысл параметр события IsEmpty. Если передано значение True, то этот обработчик будет определять картинку для "пустого" значения Value (если задано непустое значение свойства DisplayEmpty), и в этом случае Вы не должны обращаться к полям LookupSource.


Applies to
TRxDBLookupList, TRxDBLookupCombo, TDBLocate components

Declaration
property IndexSwitch: Boolean;

Description
Свойство IndexSwitch определяет, будет ли при необходимости производиться переключение индексов таблицы (если источником данных служит таблица BDE, а не результат запроса). В случае использования больших SQL-таблиц переключение индексов может занять длительное время, поэтому в таких случаях свойство желательно устанавливать в значение False.

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


Applies to
TRxDBLookupList, TRxDBLookupCombo components

Declaration
property IgnoreCase: Boolean;

Description
Свойство определяет, будет ли учитываться регистр вводимых символов при поиске термина путем набора его первых букв (см. описание компоненты TrxDBLookupCombo). Если значение свойства True (по умолчанию), то регистр не учитывается.

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