TRxDBLookupCombo Component

Unit
RxLookup

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

Компонента TRxDBLookupCombo также позволяет производить поиск нужного термина при наборе первых букв этого термина.
Например, у вас имеется таблица или результат запроса, седержащий поля CustNo и CustName. Тогда вы можете указать поле CustName как значение свойства LookupDisplay. Если пользователь вашего приложения наберет первые буквы нужной ему фамилии (находящейся в поле CustName), то если компонента TRxDBLookupCombo имеет фокус ввода, автоматически выпадет список доступных значений и выделенный элемент в списке установится в значение, первые буквы которого совпадают с введенными пользователем.

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

Свойтсво DisplayEmpty позволяет задать текстовую строку для отображения в строке TRxDBLookupCombo, когда не сделано никакого выбора. Вызов метода ResetField приводит к очистке содержимого компоненты, устоновке значения Value в пустую строку, и отображению значения DisplayEmpty.
В дополнение к событию OnDropDown, имеющемуся у TDBLookupCombo, компонента имеет событие OnCloseUp, вызываемое при закрытии выпадающего списка. Метод IsDropDown позволяет определить текущее состояние выпадающего списка выбора. Событие OnChange происходит при смене значения cвойства Value.

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

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

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



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

Applies to
TRxDBLookupList, TRxDBLookupCombo components

Declaration
property IgnoreCase: Boolean;

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

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



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 DisplayEmpty: string;

Description
Свойство задает значение DisplayValue в том случае, если никакого выбора не сделано и значение Value равно значению свойства EmptyValue (по умолчанию — пустой строке). В списке отображается дополнительной строкой в верхней части списка с использованием цвета EmptyItemColor и не скролируется (остается всегда видимым и доступным для выбора).



Applies to
TRxDBLookupCombo component

Declaration
procedure ResetField;

Description
Метод осуществляет "очистку" компоненты, то есть отменяет сделанный ранее выбор какого-либо корректного значения и устанавливает свойство Value в EmptyValue и DisplayValue в значение DisplayEmpty (по умолчанию оба — пустая строка).



Applies to
TRxDBLookupCombo component

Declaration
property Value: string;

Description
Run-time only. Значением свойства Value является содержимое DataField для текущей записи в первичном наборе данных. Когда пользователь перемещается в первичном наборе данных, значение свойства Value изменяется.
By explicitly changing the Value property value at run time, you change the contents of the field.



Applies to
TRxDBLookupCombo component

Declaration
function IsDropDown: Boolean;

Description
Функция возвращает True, если в настоящее время "развернут" выпадающий список выбора, False — в противном случае.



Applies to
TRxLookupEdit, TRxDBLookupList, TRxDBLookupCombo components

Declaration
property OnGetImage: TGetImageEvent;

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

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