powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TcxGridTableView + FindPanel
7 сообщений из 7, страница 1 из 1
TcxGridTableView + FindPanel
    #39863424
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Для работы с различными справочниками используется TcxGridTableView (не путать с TcxGridDBTableView), пользователи используют FindPanel, радует то что поиск можно сказать по всем полям.

Есть справочники, где записей в них исчисляется десятками тысяч. Когда происходит открытие таких справочников может растягиваться на 10 и более секунд... не шибко "красиво" стало в плане скорости открытия.

На данный момент, чтоб много не переделывать, можно открывать такие справочники не закачивая данные, далее пользователь вводит в FindPanel несколько интересующих символов, и тут вопрос: Как правильно отловить событие прекращения ввода символов в FindPanel, после которого происходит поиск?

Если такое событие есть, далее при обработки события "закачаю данные" в TcxGridTableView, которые будут удовлетворять данному поиску... далее чем больше букв вводит пользователь тем точнее поиск.

Есть у кого какие мысли на этот счёт, очень буду благодарен!

Заранее спасибо.
...
Рейтинг: 0 / 0
TcxGridTableView + FindPanel
    #39863427
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую версию DevExpress: 18.2
Подключение к БД через FireDAC
...
Рейтинг: 0 / 0
TcxGridTableView + FindPanel
    #39863545
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSпоиск можно сказать по всем полямИгорь_UUS"закачаю данные" в TcxGridTableView, которые будут удовлетворять данному поиску...
прямо так
Код: plsql
1.
where lower(field_1) like '%ы%' or lower(field_2) like '%ы%' or lower(field_3) like '%ы%' or ...

?
...
Рейтинг: 0 / 0
TcxGridTableView + FindPanel
    #39863567
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

Так себе решение как мне кажется, понятно что можно извращаться с таймером или OnIdle, но мне кажется само решение автоматически производить поиск при нажатиях клавиш не совсем адекватно в данном случае.
Сделайте в лоб, пользователь водит что хочет найти, нажал Enter и вы загрузили данные, привычное поведение стандартных контролов. У вас же все таки десктоп, а не веб, и пользователь будет ожидать обычного для программы поведения.
Ваш вариант это скорее поведение контролов в браузере.
...
Рейтинг: 0 / 0
TcxGridTableView + FindPanel
    #39863600
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS...
...
На данный момент, чтоб много не переделывать, можно открывать такие справочники не закачивая данные, далее пользователь вводит в FindPanel несколько интересующих симв
олов, и тут вопрос: Как правильно отловить событие прекращения ввода символов в FindPanel, после которого происходит поиск?

Если такое событие есть, далее при обработки события "закачаю данные" в TcxGridTableView, которые будут удовлетворять данному поиску... далее чем больше букв вводит пользователь тем точнее поиск.

...
То есть, пока юзер не начал вводить - ничего не доступно?
А как ввел хотя бы "а", и затем пауза - сразу все записи, где есть "а"? А потом, по мере ввода, количество записей должно уменьшаться? Намного ли это лучше поведения по умолчанию?

Я делал так: сперва ничего нет. Пока юзер не введет запрос в спецпанели панели и не нажмет "хочу". Если он хочет "всё сразу" - то и фик с ним, сам запросил, вот сиди и жди, пока подгрузится. А если ввел "азбука пчеловодства" - то и получит только то, что хочет. И никаких пауз, просто ждем, пока не нажмет на "хочу".
...
Рейтинг: 0 / 0
TcxGridTableView + FindPanel
    #39863603
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ma1tusИгорь_UUSпоиск можно сказать по всем полямИгорь_UUS"закачаю данные" в TcxGridTableView, которые будут удовлетворять данному поиску...
прямо так
Код: plsql
1.
where lower(field_1) like '%ы%' or lower(field_2) like '%ы%' or lower(field_3) like '%ы%' or ...

?
В DevExpress, кстати, в GridMode не поддерживается FindPanel. Не желают такую дичь громоздить.

There is no way to apply this feature to Grid Mode because Find Panel heavily uses the inner TcxGrid filtering capabilities that do not work in Grid Mode.
...
Рейтинг: 0 / 0
TcxGridTableView + FindPanel
    #39863615
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

если вопрос "как отловить событие" все еще в силе см. OnChanged свойства вью.DataController.Filter

Только нафига тебе вообще FindPanel, если ты собираешься сразу отфильтрованные записи грузить. Разве что для подсветки совпадающих фрагментов.
Но никто ведь не мешает забацать собственную панель. И по завершению ввода перезаливать данные в твой DataController.
Вот тут пишут, как красиво подсвечивать найденные фрагменты: https://www.devexpress.com/Support/Center/Question/Details/K18311/how-to-highlight-found-words-in-cells
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TcxGridTableView + FindPanel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]