Программный Файл: ...\Samples\Solution\Controls\Combobox\Lookup.scx
Данный пример демонстрирует добавление введенного пользователем текста в Список контрола combo-box и обеспечивает возможность поиска необходимого Элемента в указанном списке.
Добавление Пользовательского Фрагмента Текста в Список Combo Box
Контрол типа Combo Box позволяет вводить требуемое Значение или выбирать уже заданные Значения из раскрывающегося Списка (Drop-Down-List). Вы можете также определить новое Значение в Списке Контрола на основании введенного текстового Значения, поэтому Пользователю не нужно будет вводить одно и тоже значение несколько раз (при переодическом выполнении ОписываемыхОпераций).
В зависимости от варианта определения ключевого Свойства RowSourceType рассматриваемого контрола Combo Box существует несколько различных способов дополнения нового Элемента в Список рассматриваемого Контрола. В текущем примере: RowSourceType = 1 - (по-значению). Если пользователем введено в Текстовый элемент Контрола новое Значение, то в представленном далее фрагменте программного кода выполняется добавление нового элемента в Список контрола (в значение свойства RowSource добавляется запятая и новая текстовая строка):
![]() |
|
---|---|
cCountryName = ALLTRIM(Custs.Country) |
Контрол типа Combo Box в Примере программной обработки Текста использует установку значения свойства RowSourceType = 0 - (нет источника). В представленном далее фрагменте программного кода, ассоциированного с событием Valid для объекта cboSearchString (смотрите пример формы: ...\Samples\Solution\Controls\TXT_EDT\Text.scx) выполняется добавление нового элемента в Список контрола на основании введенного Значения в текстовый элемент Контрола:
![]() |
|
---|---|
IF !EMPTY(THIS.Text) |
Если определяющее свойство RowSource рассматриваемого контрола Combo Box указывает на Массив, вам необходимо обеспечить добавления введенного Текста как элемент Массива, и выполнить метод Requery - для обновления состава раскрывающегося Списка.
Если рассматриваемое свойство RowSource указывает на Таблицу или Курсор, вам требуется обеспечить либо добавление новой записи, ли выполнение команды REPLACE - для пустой записи, и также выполнить обновление Списка Контрола (выполнение Метода Requery).
Обеспечение Поиска Требуемых Данных
Дополнительно к иллюстрации Добавления элемента в список контрола Combo Box, в данном примере демонстрируется один из возможных путей фильтрации выбираемых групп Записей соответственно уточняемому значению Фильтра. Пользователь может выполнить следующее:
-
Ввести некоторое Значение в текстовый элемент контрола ComboBox.
-
Выбрать одно из значений в раскрывающемся Списке.
-
Ввести начальную часть поискового Значения для выполнения динамического Поиска.
Ввод Значения в Текстовый Элемент контрола Combo Box
Представленный далее программный код ассоциирован с Событием LostFocus контрола cboCombo. После завершения ввода Пользователем требуемого значения, в событии LostFocus выполняется заполнение курсора данных в соответствие с выполненным выбором и определяется значение свойства RecordSource для Объекта типа Grid (grdCust), где выбранные данные отображаются.
![]() |
|
---|---|
cDisplayValue = ALLTRIM(THIS.DisplayValue) |
Выбор требуемого Значения из раскрывающегося Списка (Drop-Down-List)
В основном, программный Код для Поиска Значения связывается со стандартным Событием InteractiveChange рассматриваемого контрола cboDrop – Если выбирается значение "(All)" - Все, тогда все записи из представленного Курсора выбираются в Результирующий набор Данных, иначе, выбираются только Записи данных, соответствующие пользовательскому Выбору.
Определение частичных Значений для Поиска по-возрастанию (Incremental Search)
Далее представлен фрагмент программного кода для События InteractiveChange контрола cboIntSearch, обеспечивающего динамический Поиск требуемого Значения при вводе каждого символа в Текстовый элемент контрола ComboBox.
![]() |
|
---|---|
#DEFINE DELKEY 127 |