powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBLookupComboBox программное выделение элемента в выпадающем списке
14 сообщений из 14, страница 1 из 1
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39740175
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток форумчане,
Вопрос:
Можно ли программно в выпадающем списке DBLookupComboBox , выделять синим (т.е. синей строкой) элемент который я вставляю в DBEdit ?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TFMain.dbEditChange(Sender: TObject);
begin
 
  if IBDataSet1.State in [dsInsert, dsEdit] then
  begin
    DBLookupComboBox.DropDown;
    IBDataSet2.Locate('NAME_ORGANIZATION_FULL', dbEdit.Text, [loCaseInsensitive, loPartialKey]);
 End



(где
IBDataSet1 - к нему подключен " DBLookupComboBox "
IBDataSet2 - источник данных для " DBLookupComboBox ")

А то у меня при вводе в dbEdit данных, открывается список DBLookupComboBox , как раз на нужном элементе, а синей полоски (как при выделении мышкой) на элементе нет

Заранее спасибо за ответ
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39740177
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, при выделении элемента списка, сам список должен оставаться открытым
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39740220
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kos-2010,
перевести фокус на список
Код: pascal
1.
DBLookupComboBox.SetFocus;
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39740295
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkuKos-2010,
перевести фокус на список
Код: pascal
1.
DBLookupComboBox.SetFocus;



Та уже пробовал

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TFMain.dbedNameFullOrganChange(Sender: TObject);
begin
  if DM.ibdsProposal.State in [dsInsert, dsEdit] then
  begin
    dblcbNameOrganizationProposal.DropDown;
    DM.ibdsClientCL.Locate('NAME_ORGANIZATION_FULL', dbedNameFullOrgan.Text, [loCaseInsensitive, loPartialKey]);
    dblcbNameOrganizationProposal.SetFocus;
  end;



Фокус переводится, но строка в DBLookupComboBox (у меня это " dblcbNameOrganizationProposal ") синим цветом всеравно не выделяется (так например с TEdit работает).

Вот в " ComboBox ", там все проще, например: выделение первого элемента " Combobox1.ItemIndex := 0 "
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39740310
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и мне нужно сделать так, чтоб курсор во время выделения элемета в списке, оставалтся в окошке DBEdit, в котором я и набираю искомое слово
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39741323
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kos-2010,
так что-ли?
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39741797
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitku,

Да именно так. только как это сделать?
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39742167
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kos-2010vitku,

Да именно так. только как это сделать?

Делал примерно 10 лет назад. Работает до сих пор. Помню больно хлопотно было. Да и контролы DevExpress спасли. Locate по датасету не пользовал. На ввод каждого символа посылался запрос на сервер. Оттуда возвращались нужные записи и список заполнялся. Ну нужная запись выдлелялась нужным цветом с помощью внутренних фишек cxGrid. Главное на сервере нужно создать правильно индексы для скорости выборки. Объем данных в таблицах, которые возвращают записи, не большой по нынешним меркам - примерно пол-миллиона. На клиента дергались по 9 записей. Хотя сейчас бы так не делал. На каждый чих дергать сервер - не есть хорошо.
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39742190
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitku На каждый чих дергать сервер - не есть хорошо.

Да, дергать сервер каждый раз действительно не хорошо.

Ладно, пока обойдусь, без выделения, просто подводя элемент списка под нужный, изменяя DBEdit
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TFMain.DBEdit1Change(Sender: TObject);
begin
  if IBDataSet1.State in [dsInsert, dsEdit] then
  begin
    IBDataSet2.Locate('NAME_ORGANIZATION_FULL', DBEdit1.Text, [loCaseInsensitive, loPartialKey]);
    DBLookUpComboBox.DropDown;
  end;
end;



Потом попробую еще компонент " DBLookupComboboxEh1 " из библиотеки " EhLib ". Может там что-то есть подобное.
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39742233
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010,

MemoryDataset или кешированный датасет не предлагать?
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39742340
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kos-2010Потом попробую еще компонент " DBLookupComboboxEh1 " из библиотеки " EhLib ". Может там что-то есть подобное.
Есть то оно там есть и в теории должно работать замечательно. Однако есть один досадный глюк - несмотря на установленную опцию CaseInsensitiveTextSearch, при поиске "иванов" (предполагаем, Дмитрий), если в датасете в наличии имеется прописной "ИВАНОВ" (к примеру, Александр), то набирая строчными, вы все равно собъетесь (автоматически) на капслок и выборка будет по нему. Таким образом, никак "иванова" (Дмитрия) вы не выберете :(.
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39742341
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Причем, так это работает даже в последней версии 9.3.
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39742355
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Softologic,

хотя... вот все таки решение проблемы - в самом датасете должна стоять опция FilterOptions - foCaseInsensitive:=True:
http://forum.ehlib.com/ru/viewtopic.php?f=4&t=2300&hilit=CaseInsensitiveTextSearch
...
Рейтинг: 0 / 0
DBLookupComboBox программное выделение элемента в выпадающем списке
    #39742458
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SoftologicKos-2010Потом попробую еще компонент " DBLookupComboboxEh1 " из библиотеки " EhLib ". Может там что-то есть подобное.
Есть то оно там есть и в теории должно работать замечательно. Однако есть один досадный глюк - несмотря на установленную опцию CaseInsensitiveTextSearch, при поиске "иванов" (предполагаем, Дмитрий), если в датасете в наличии имеется прописной "ИВАНОВ" (к примеру, Александр), то набирая строчными, вы все равно собъетесь (автоматически) на капслок и выборка будет по нему. Таким образом, никак "иванова" (Дмитрия) вы не выберете :(.
Чтобы такого не произошло (ведь бывают полные однофамильцы), в списке кроме ФИО должны быть еще доп. аттрибуты человека - например дата рождения, тип документа , удостов. личности, серия и номер. Видя все эти данные можно с большой долей вероятности однозначно идентифицировать человека.
Об этом уже не раз велся разговор (спор). Каждый решает для себя то что считает нужным. Я в свое время определился с набором необходимых аттрибутов, сочетание которых однозначно идентифицирует человека. Вот уже 10 лет нет никаких проблем.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBLookupComboBox программное выделение элемента в выпадающем списке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]