Вкладка RX DBAware. Компонент TRxDBLookupCombo

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

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

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


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

   Компонент TRxDBLookupCombo также позволяет
производить поиск нужного термина при наборе первых букв этого термина. Если
свойство IgnoreCase установлено в True, то
при наборе пользователем первых букв термина регистр символов не учитывается.
   Свойтсво DisplayEmpty позволяет задать
текстовую строку для отображения в строке TRxDBLookupCombo,
когда не сделано никакого выбора. Вызов метода ResetField
приводит к очистке содержимого компонента, устоновке значения Value
в пустую строку, и отображению значения DisplayEmpty.
   В дополнение к событию OnDropDown, имеющемуся
у TDBLookupCombo, компонент имеет событие OnCloseUp,
вызываемое при закрытии выпадающего списка. Метод IsDropDown
позволяет определить текущее состояние выпадающего списка выбора. Событие OnChange
происходит при смене значения cвойства Value.
   Компонент также позволяет задать изображения для рисования
в левой части каждой строки списка, в зависимости от содержимого полей БД,
с помощью события OnGetImage.
   При присвоении значений свойству Value или
DisplayValue компонент TRxDBLookupCombo или TRxDBLookupList
безошибочное позиционирование на соответствующую запись в списке произойдет только в
том случае, если соответствующее поле в подмножестве записей, заданном источником
данных DataSource, имеет только уникальные неповторяющиеся значения.
В противном случае вы получите несколько "выбранных" элементов в списке (причем реально
будет выбран только один самый первый), значения полей в которых равны заданному.
Избегайте таких ситуаций!
   При работе с некоторыми SQL-серверами БД
установка свойств IndexSwitch или IgnoreCase в
значение True может приводить к неожиданному поведению компонента.
В этом случае постарайтесь добиться "правильного" поведения за счет
комбинирования разных значений свойств IgnoreCase и IndexSwitch .
   Рассмотрим подробнее некоторые свойства компонента:

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

СвойствоОписание
property IgnoreCase: Boolean; Свойство определяет, будет ли учитываться регистр вводимых символов при
поиске термина путем набора его первых букв. Если значение свойства True
(по умолчанию), то регистр не учитывается.
property IndexSwitch: Boolean; Свойство IndexSwitch определяет, будет ли при необходимости производиться
переключение индексов таблицы (если источником данных служит таблица BDE, а
не результат запроса). В случае использования больших SQL-таблиц переключение
индексов может занять длительное время, поэтому в таких случаях свойство желательно
устанавливать в значение False.
property DisplayEmpty: string; Свойство задает значение DisplayValue в том случае, если
никакого выбора не сделано и значение Value равно значению
свойства EmptyValue (по умолчанию - пустой строке). В списке
отображается дополнительной строкой в верхней части списка с использованием цвета
EmptyItemColor и не скролируется (остается всегда видимым и
доступным для выбора).
procedure ResetField; Метод осуществляет "очистку" компонента, то есть отменяет сделанный
ранее выбор какого-либо корректного значения и устанавливает свойство Value
в EmptyValue и DisplayValue в значение
DisplayEmpty (по умолчанию оба - пустая строка).
property Value: string; Run-time only. Значением свойства Value
является содержимое DataField для текущей записи в первичном
наборе данных. Когда пользователь перемещается в первичном наборе данных,
значение свойства Value изменяется.
function IsDropDown: Boolean; Функция возвращает True, если в настоящее время "развернут"
выпадающий список выбора, False - в противном случае.
property LookupDisplayIndex: Integer; В случае, если свойство LookupDisplay задает более одного
поля для отображения в списке, значение свойства LookupDisplayIndex
определяет номер поля, значение которого возвращается свойством DisplayValue
и отображается в строке компонентf TrxDBLookupCombo.
property OnGetImage: TGetImageEvent; Событие позволяет задать картинку (битовое изображение, иконку и т.д.), которая
будет изображаеться в левой части строки списка. В обработчике события вы можете
определить значение параметра TextMargin, определяющее отступ
текста от левого края списка (рекомендуется задавать это значение одинаковым для
всех строк списка) и значение параметра Graphic, определяющего
изображение для рисования.
В обработчике события текущая запись Lookup-набора данных (заданного свойством
LookupSource) соотвествует той, для которой вы будете задавать
изображение, таким образом вы можете проверить содержимое этой записи и заданнное
вами графическое изображение будет зависеть от наполнения полей БД.
В компоненте TRxDBLookupCombo имеет смысл параметр события
IsEmpty. Если передано значение True, то
этот обработчик будет определять картинку для "пустого" значения
Value (если задано непустое значение свойства DisplayEmpty),
и в этом случае вы не должны обращаться к полям LookupSource.

   
Компонент TRxDBLookupCombo можно связать с таблицой и выбирать
значение из списка.

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


Рис.2. Форма с размещенными на ней компонентами RxDBGrid1, Table2, DataSource2, RxDBLookupCombo1, RxSpeedButton1
   С помощью кнопки RxSpeedButton1
(Caption = ‘Очистить') можно произвести "очистку"
компонента, то есть отменить сделанный ранее выбор какого-либо значения.

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


Рис.3а. Выбор строки в списке не совершен


Рис.3б. Открыт выпадающий список


Рис.3в. Выбрана вторая строка в списке

   
Текст этого примера можно взять здесь.
   На следующем шаге мы рассмотрим компонент TRxDBLookupEdit.



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

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