powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress Ribbon сделать "живой поиск"
12 сообщений из 12, страница 1 из 1
DevExpress Ribbon сделать "живой поиск"
    #39745396
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: хочется чтобы у текстового поля поиска в DevEx-овском риббоне выпадал список возможных вариантов. Но искать надо в огромном количестве элементов, поэтому заранее заполнять комбобокс не имеет смысла, надо заполнять на лету. Что-то вроде Autocomplete в jqueryui.
Т.е. пользователь набрал пару знаков текста, обработчик реакции на onPropertiesEditValueChanged загрузил 10 подходящих значений, начинающихся на эту строку и отобразил их в комбобоксе (или какие ещё есть варианты?) под текстовым полем.

Есть ли у кого ссылки или примеры реализации подобного?
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745660
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimonka,

Есть.
Я делал, получилось не без глюков - TcxTextEdit с AutoComplete как у Яндекса (Исходник)
Его можно встроить в Ribbon.

Добавь в событие OnShowDropDown свой обработчик.
В последствии я переделал контрол так, что он получал список автокомлита из Сторед Процедуры, основываясь на текущем значении TextEdit
Он был сделан так, что событие OnDelayedChange вызывается не сразу в OnChange, а ждёт 500мс с момента последнего изменения. Что бы не вызывать СП при каждом изменении.

Короче, есть - но требует доработок.
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745662
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SELECT DISTINCT TOP 5 D.Description
FROM DepartmentPositions D WITH (NOLOCK)
WHERE (D.ItemType=@ItemType) and (D.Description like '%'+@Description+'%')
ORDER BY D.Description
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745663
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745844
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У ТС было условие:
Dimonka... Но искать надо в огромном количестве элементов, ... надо заполнять на лету...
В приведенном примере от Valery_B с помощью СП дергается поле Description из таблицы DepartmentPositions и возвращаются на клиента 5 первых записей. Используется like. Если действительно "огромное количество элементов", то приведенный запрос обработает (путем прямого перебора) абсолютно все элементы (записи) и только затем вернет первые 5. Если даже поле Description будет индексировано, то конструкция like (в приведенном варианте) индексы не использует (Если ошибаюсь - поправьте плз.) Соответственно тормоза с показом списка обеспечены. ИМХО.
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745910
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BЕсть.
Я делал, получилось не без глюков - TcxTextEdit с AutoComplete как у Яндекса (Исходник)

Короче, есть - но требует доработок. Спасибо! Почти то, что надо.
Какие глюки наблюдались?

vitku Если действительно "огромное количество элементов", то приведенный запрос обработает (путем прямого перебора) абсолютно все элементы (записи) и только затем вернет первые 5. SQL настроить это дело второе. Меня больше волнует сейчас поведение контрола. Ну и с "огромным количеством" я конечно немного преувеличил - "неизвестное количество" будет точнее, что не исключает конечно "огромное количество".
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745913
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitku,

Да, ты правильно заметил.
Поиск по содержимому затратный. Но это не имеет никакого отношения к компоненту.
Скорее всего, поиск будет тех пор, пока не наберётся ТОП 5 записей. А вообще, это зависит от БД.
Как ты там оптимизируешь сторед процедуру - это уже твоё дело.
Но так или иначе, ты сделаешь всё тоже самое.


Правильное решение: Делать и использовать сервер приложений, кэшируя запросы на нём.
Но это выходит за рамки темы.
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745917
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaКакие глюки наблюдались?

Один точно есть : если открыт ДропДаун и ты переносишь окно, то ДД остаётся висеть в своём месте. Его надо закрывать при потере фокуса.

Вообще, у меня TEdit очень сложный контрол. AutoComplete в нём это только часть функционала.
Но всё руки не доходят довести его до ума.
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745957
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем использовать TcxTextEdit ? Не проще ли TcxPopupEdit ?
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745975
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery_Bvitku,

...Скорее всего, поиск будет тех пор, пока не наберётся ТОП 5 записей.
Не... В приведенном тобой примере запрос выберет абсолютно все записи, удовлетворяющие критериям отбора where like..., даже независимо от того, есть ли правильный индекс на поле Description. Like индексы не использует.
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39745987
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitku,

Поиск будет до тех пор пока не наберётся 5 строк. Проверено на FB.
...
Рейтинг: 0 / 0
DevExpress Ribbon сделать "живой поиск"
    #39746000
vitku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXIvitku,

Поиск будет до тех пор пока не наберётся 5 строк. Проверено на FB.
Настаивать не буду. Да и доки, я думаю, не врут. Думаю kdv скажет точнее.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress Ribbon сделать "живой поиск"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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