Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 7

Фильтрация в Combobox-е

10.06.2015, 16:36. Показов 2748. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Подскажите пожалуйста есть ли возможность реализовать такую вещь? Есть combobox, например с фамилиями, можно ли сделать так чтобы при наборе буквы а оставались только фамилии на а, при наборе следующей буквы б, оставались только фамилии начинающиеся на Аб и т.д. то есть сделать сортировку?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2015, 16:36
Ответы с готовыми решениями:

Фильтрация БД с combobox
Делаю фильтрацию по этому видео уроку https://www.youtube.com/watchv=FeNlT4gtCg0&index=7&list=PLzTKGcAZiYWI6v7mYiFR-rOtKJ_Bq5LuA ...

Фильтрация с combobox
Всем приветик! Возникла проблемка..надеюсь что поможете решить Есть dGrid и combobox, который осуществляет фильтрацию по...

ComboBox и фильтрация записей
Здравствуйте, покажите пожалуйста, как сделать фильтрацию в зависимости от комбобокса. Т.е. например по фамилии, имени, отчеству Это...

2
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
12.06.2015, 09:54
Лучший ответ Сообщение было отмечено maxim1 как решение

Решение

Это фильтрация называется, сортировку надо предварительно сделать в запросе.
Напрямую сделать нельзя - это ж Делфи! Можно только с извращениями. Так что слабонервным просьба дальше не читать))
У меня была задача искать таким образом в списке улицу неслабого города(примерно 1 лимон названий), так что мышью или еще как-то вообще не вариант листать.
Собственно извращение: Кидаю на форму DBLookupComboBox2 и Edit1.
Название: Безымянный.jpg
Просмотров: 128

Размер: 3.9 Кб
DBLookupComboBox уменьшаю до размеров его кнопки, т.к его полем ввода будет Edit и ставлю их рядом.
Далее что происходит - юзер должен будет стать на эдит. Обработка этого:
Delphi
1
2
3
4
5
procedure Edit1Enter(Sender: TObject);
begin
   DBLookupComboBox2.DropDown;      // открыть список    DBLookupComboBox2
     Combo_int := DBLookupComboBox2.KeyValue; // временное хранение значения комба
end;
Далее юзер барабанит по буквам и после каждой выполняется обработчик онChange

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TFKarta.Edit1Change(Sender: TObject);
begin
   
    If Length(Edit1.Text) > 0 then
 
         begin
     //---------------------вот здесь оч хотелось Locate (т.е. поиск)  но он не работает с русским текстом!!! (((((((
           // поэтому все-таки фильтрацию:
                  Clientdataset.CommandText := 'SELECT Sp_UL.Kod, ........
                                     'FROM Sp_.......... +
                      'WHERE (((Left([UL_NAME],' + IntToStr(Length(Edit1.Text)) + '))="' + Trim(Edit1.Text) + '")) ' +
                                      'ORDER BY Sp_UL.UL_NAME;';    // короче тот же исходный запрос  DBLookupComboBox2а,
                                                                            // только отфильтрованный по набитым буквам.
 
                   Clientdataset.Execute;
 
                               Clientdataset.Active := false;
                                Clientdataset.Active := true;   /// обновление запроса в DBLookupComboBox 
 
 
end;
Далее юзер видит знакомое слово в фильтруемом выпавшем списке DBLookupComboBox и кликает на него:
при этом происходит выход из эдита.
Delphi
1
2
3
4
procedure TFKarta.Edit1Exit(Sender: TObject);
begin
   DBLookupComboBox2.CloseUp(true);   // закроем выпавший список    DBLookupComboBox2, а то так и останется О_О)))
end;
Происходит клик на комбе:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure DBLookupComboBox2Click(Sender: TObject);
begin
 
  ///
    if Length(DBLookupComboBox2.Text) > 0 then
          Edit1.Text := DBLookupComboBox2.Text;
 
 
                    Clientdataset.CommandText := 'SELECT ..... ' +   // возвращаем поисковой датасет на исходную
                         'FROM ... +                                                 // т.е. убираем с него фильтр
                              'ORDER BY Sp_UL.UL_NAME;';
 
                   Clientdataset.Execute;
 
                               DM.cdsSP_UL_poisk.Active := false;
                                 DM.cdsSP_UL_poisk.Active := true;
 
 
       if DBLookupComboBox2.KeyValue <> Combo_int then
        begin
             Combo_int := DBLookupComboBox2.KeyValue;        // получили выбраный юзером код улицы
                                                 // делаем что с ним надо
                      ....................
         end;                     
end;
// вот и всего то практически...
1
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
12.06.2015, 10:05
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.06.2015, 10:05
Помогаю со студенческими работами здесь

Фильтрация через Combobox
Здраствуйте, помогите пожалуйста решить следующую задачу. Есть поле со списком должностей например: менеджер, бухгалтер, финансист. Нужно...

Фильтрация через ComboBox
Подскажите пожалуйста. Проблема в том, что когда открываешь программу и делаешь фильтрацию, то все получается. Но когда делаешь это...

Фильтрация ComboBox + RadioButton
У меня есть 7 RadioButton для выбора дня недели, по выбору фильтруются таблица procedure TForm1.RadioButton1Click(Sender: TObject); ...

Фильтрация с использованием ComboBox и CheckBox.
Помогите сделать фильтрацию с использованием ComboBox и CheckBox - Delphi БД

Фильтрация данных по нескольким combobox
Здравствуйте, проблема такая. имеется база данных Nedvigimost, фильтрацию нужно сделать по cтолбцам &quot;Район&quot; и &quot;Количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru