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

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

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

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

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

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

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

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

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

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

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

Я делал так: сперва ничего нет. Пока юзер не введет запрос в спецпанели панели и не нажмет "хочу". Если он хочет "всё сразу" - то и фик с ним, сам запросил, вот сиди и жди, пока подгрузится. А если ввел "азбука пчеловодства" - то и получит только то, что хочет. И никаких пауз, просто ждем, пока не нажмет на "хочу".
...
Рейтинг: 0 / 0
18.09.2019, 21:54
    #39863603
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxGridTableView + FindPanel
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
18.09.2019, 22:18
    #39863615
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxGridTableView + FindPanel
Игорь_UUS,

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

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


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