Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пошаговый поиск по таблице. [D7, MSSQL]


Слава-АБС ©   (2005-10-13 13:57:00) 

Уважаемые мастера! Подскажите с идеей алгоритма пошагового поиска по dbgrid.
Это когда допустим, я ищу слово "ELASTIC" и набираю E-L-A и т.д. По мере ввода символов при каждом приращении в комбинации набранных букв ищется соответствующее им слово. Иначе говоря, сначала ищется первое слово, начинающееся на E, далее первое слово, начинающееся на EL, и т.д.

В Visual FOX есть функция IncrementalSearch, а в Delphi?


evvcom   (2005-10-13 17:15:00) [1]


> В элибовском гриде такая функциональность встроена.

У... а в QuantumGrid-е как это встроено...! Можно даже к следующей/предыдущей записи, удовлетворяющей набранному, переходить, не набирая дополнительного символа.


Слава-АБС   (2005-10-13 16:49:00) [2]

На DBGrid1KeyPress посадил
if not(key in['0'..'9']) then key:=#27;
FS:=FS+key;
DBGrid1.DataSource.DataSet.Locate('ACCOUNT', FS, [loPartialKey]);

2Sergey13 Переходит по записям нормально, именно так как представлял, осталась одна фича, как менять цвет фона? В StatusBar не совсем красиво выводить вводимые данные, а желание такое, если набрал одну цифру, то у нее фон меняется, если 2 то фон меняется у двух и т.д.


Ega23   (2005-10-13 16:03:00) [3]


> Неудобно печатать в пустоте. Не видно ничего. 8-)
>


Я в StatusBar строку поиска вывожу. Нормально.


Sergey13   (2005-10-13 16:02:00) [4]

2[12] Ega23 ©   (13.10.05 15:57)
Неудобно печатать в пустоте. Не видно ничего. 8-)


Ega23   (2005-10-13 15:57:00) [5]

Если стоя на гриде, на определённом столбце - тоже можно. Идея такая - заводишь буффер, в которое буквы пишешь, по этому столбцу делаешь Locate. При переходе на другой столбец - обнуляешь буффер.

2 msguns ©   (13.10.05 14:47) [7]

> А если в эдите нет ничего ?


if Edit1.Text<>'' then DBGrid.DataSource.DataSet.Locate(имя_поля, Edit1.Text, [])

Устроит?   :о)


Sergey13   (2005-10-13 15:49:00) [6]

2[8] Слава-АБС ©   (13.10.05 15:32)
А ты случайно не про поиск в выпадающем списке?


Sergey13   (2005-10-13 15:44:00) [7]

2 [8] Слава-АБС ©   (13.10.05 15:32)
>Я хотел, когда именно в гриде набираешь, чтобы шло перемещение...
Это как это? Ты в нем набираешь (в конкретной ячейке, заметь, иначе где? ), а он перемещается (т.е. активная запись меняется). Как ты себе это представляешь?


Anatoly Podgoretsky   (2005-10-13 15:35:00) [8]

Как раз то


Слава-АБС   (2005-10-13 15:32:00) [9]

Уточнил, оказывается это называется инкрементный поиск.
А вот исходник от Ega23, не совсем то.
Я хотел, когда именно в гриде набираешь, чтобы шло перемещение...


msguns   (2005-10-13 14:47:00) [10]

>Ega23 ©   (13.10.05 14:13) [5]
>В Edit1.OnChange пишем
DBGrid.DataSource.DataSet.Locate(имя_поля, Edit1.Text, [])

А если в эдите нет ничего ?


Amoeba   (2005-10-13 14:41:00) [11]

Удалено модератором
Примечание: Автор не разрешал приводить пароль где либо


Ega23   (2005-10-13 14:13:00) [12]

В Edit1.OnChange пишем
DBGrid.DataSource.DataSet.Locate(имя_поля, Edit1.Text, [])


ANB   (2005-10-13 14:09:00) [13]

В смысле эхлибовском.


ANB   (2005-10-13 14:08:00) [14]


> Слава-АБС ©   (13.10.05 13:57)

В элибовском гриде такая функциональность встроена.


Seg   (2005-10-13 14:04:00) [15]

В Дельфи есть Locate


Sergey13   (2005-10-13 14:04:00) [16]

Полистай форум. Каждую неделю наверное этот вопрос задается.


Наверх

Титульная страница Поиск, карта сайта Написать письмо