Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Пошаговый поиск по таблице.   Найти похожие ветки 

 
Слава-АБС ©   (2005-10-13 13:57) [0]

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

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


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

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


 
Sergey13 ©   (2005-10-13 14:04) [2]

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


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


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

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


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

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


 
Ega23 ©   (2005-10-13 14:13) [5]

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


 
Amoeba ©   (2005-10-13 14:41) [6]

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


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

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

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


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

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


 
Anatoly Podgoretsky ©   (2005-10-13 15:35) [9]

Как раз то


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

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


 
Sergey13 ©   (2005-10-13 15:49) [11]

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


 
Ega23 ©   (2005-10-13 15:57) [12]

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

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

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


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

Устроит?   :о)


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

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


 
Ega23 ©   (2005-10-13 16:03) [14]


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


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


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

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

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


 
evvcom ©   (2005-10-13 17:15) [16]


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
3-1127453269
Bless
2005-09-23 09:27
2005.11.06
ADOConnection=3 потока?


2-1129025875
Jolik
2005-10-11 14:17
2005.11.06
Windows запрещает доступ к реестру :(


4-1125764703
s3ek
2005-09-03 20:25
2005.11.06
инофрмация от консольного приложения в главную форму


1-1129709934
maVladimir
2005-10-19 12:18
2005.11.06
Timer. Рестарт.


1-1129286094
Sergey_R
2005-10-14 14:34
2005.11.06
Завершение потока