![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пошаговый поиск по таблице. [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]Полистай форум. Каждую неделю наверное этот вопрос задается.