Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Базы данных > BCB6+ADO+Улучшенный поиск |
Автор: Palladin 8.6.2008, 15:30 | ||||||
АЦЦКАЙ ПОИСК В статье BCB6+ADO был приведен поиск, который работает корректно, но как всегда есть НО, во первых тот поиск убирает все неподходящие записи, во вторых ошибись ты хотя бы на один символ и не найдешь то что надо, а если оно будет совсем рядом ты этого не увидешь! На днях увидел поиск в программе Галактика, это что-то типа 1С, там при клике по аналогу DBGrid-a появляется аналог компонента Edit в него заносится информация из ячейки по которой кликнули, после изменения данных в Edit-e, указатель по таблице прогоняется к нужной записи, а вместе с ним и Edit, чуть выше записи! Очень удобно, к примеру ищем мы инвентарный номер в таблице в которой в поле "инвентарный номер" более 5000 записей, указатель подгоняется все ближе и ближе и вы всегда можете немного изменить искомые данные! Итак приступаем: Будем считать что Ваша БД уже сделана, вы сделали добавление и т.д. приступаем к поиску! Кидаем на форму Edit1, уменьшаем его габариты ну скажем 75 на 17, далее устанавливем размер шрифта вводимого в Edit до 6. Прячем(Visible=false;) Кидаем на форму DBEdit1, прячем, конектим к искомому полю. будем считать что поле "инвентарный номер" это у вас первый столбец, тогда на OnCellClick компонента DBGridпишем код:
Далее на onKeyDown Edit-a пишем код:
Подсветим найденную, тогда в onDrawColumnCel l DBGrid-a пишем код:
Вот и все, код кривоват, есть пару недоработак, таких как мерцание, ну и может еще что Надеюсь комунить пригодится, критика принимается, отладка кода тоже, заранее спс Спасибо Rrader-y он сам того не зная помог в этом деле ![]() 16.06.2008 подправил поиск, чтобы улучшить работу этого поиска с OnChange Edita обработку перекинул на OnKeyDown, при нажатии на Enter пойдет поиск ![]() |
Автор: Bugmaker 6.7.2008, 19:54 |
У меня пример не откомпилировался в билдере пока я не написал Key вместо key. |
Автор: Palladin 6.7.2008, 23:59 |
Исправил ![]() |