FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9115
Вход
Инкрементный поиск в Grid (да и не только)

Возможность быстрого поиска по базе


 
Прислал: Евгений Колмаков   Категория: Интерфейс


Инкрементный поиск в Grid (да и не только)

Посмотрев на бурные обсуждения проблемы быстрого поиска в Grid, я вспомнил, что сам когда-то делал нечто похожее в своем приложении. Это не класс, не объект (просто лень тратить время на оформление). А сама процедура проста до безобразия:

Метод KeyPress формы, в которой расположен Grid(List):

LPARAMETERS nKeyCode, nShiftAltCtrl

cValidString="abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя1234567890 '"+'!@#$%^&*()_+№;%:?*()/|\,.[]{}-=-"'

if ATC(CHR(nKeyCode), cValidString)>0
This.SearchString=This.SearchString+CHR(nKeyCode) && Добавляем введенный символ в переменную
This.OLEControl1.Panels(2).Text=' Быстрый поиск: "'+This.SearchString+'" ' && Обновление строки подсказки
=Seek(This.SearchString, "Abonenty", This.ColumnsArray(This.CurrentColumn)) && Поиск по текущей колонке
If Found()
This.Grid1.SetFocus
endIf
This.TimeOutTimer.Interval=3000 && Запуск таймера на очистку строки поиска через 3 секунды
NoDefault
endIf

Несмотря на топорность решения это работает быстро, не требует упорядочивания набора данных по колонке поиска (хотя для удобства поиска рекомендуется его делать) и привязано не к объекту, а к таблице. Таким же образом я делал поиск и в List'е, и в TreeView.
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.988)
Дополнения пользователей
Инкрементный поиск в Grid (да и не только)
[+][?]
Рус
01.07.01 13:38:59

Проверить не смог, так как не стал добавлять свойства на форму, так как о их типах и о том, что их
вообще нужно добавлять ни сказано ни слова.

Свойство SearchString конечно же = '
А вот как на счет OLEControl1 и ColumnsArray?
Евгений Колмаков Re:
OLEControl1 - это просто ActiveX объект (Status bar). Он используется только для вывода текущего значения строки поиска. А ColumnsArray - это массив для хранения информации о колонках Grid (сделано из-за не совсем корректной работы свойств самого Grid'а при перемещениии колонок). Он используется только для получения информации об активной колонке.
V6
10.07.01 02:19:07

Как заставить работать
CurrentColumn?
ColumnsArray?
Не могу найти это ни у одного из объектов Grid1
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика