DBGrid - кнопка фильтра как в Excel
Модератор: Модераторы
DBGrid - кнопка фильтра как в Excel
Здравствуйте.
Начал разбираться с Lazarus, так как Excel уже не подходит для задач, но хотелось бы перенести плюшки.
Как бы добавить к каждому столбцу кнопку фильтр, чтобы при нажатии появлялось окошко, в которое можно ввести часть текста и в отфильтрованном списке можно было бы выбрать варианты (или при нажатии Enter сразу бы фильтровалось по тому, что уже нашлось)? При этом нужно учитывать фильтры других столбцов
Начал разбираться с Lazarus, так как Excel уже не подходит для задач, но хотелось бы перенести плюшки.
Как бы добавить к каждому столбцу кнопку фильтр, чтобы при нажатии появлялось окошко, в которое можно ввести часть текста и в отфильтрованном списке можно было бы выбрать варианты (или при нажатии Enter сразу бы фильтровалось по тому, что уже нашлось)? При этом нужно учитывать фильтры других столбцов
Буду удивлен, если буду не прав, но эта хотелка из разряда МНОГО своего кода. Для БД смотреть LIKE и локальный (самодельный) поиск по гридам. Я копал-бы в эту сторону...
Вам никто не может предоставить "кнопки как в Excel-е", кроме как в самом Excel-е.. Майкрософт придумала данный компонент, включила функционал для удобства своих клиентов, и то не сразу.
Это их фишичка.. на который вы подсели..
Хотя не все так печально. Есть компоненты которые предоставляют похожий функционал:
http://www.ehlib.com
https://www.devexpress.com/
http://www.tmssoftware.com/
и др..
можно тут, крупная база компонентов, поискать
http://torry.net/
вообще если вы умеете делать визуальные компоненты - то за один вечер вы сможете нарисовать кнопку.. Ну нужен опыт.
Это их фишичка.. на который вы подсели..
Хотя не все так печально. Есть компоненты которые предоставляют похожий функционал:
http://www.ehlib.com
https://www.devexpress.com/
http://www.tmssoftware.com/
и др..
можно тут, крупная база компонентов, поискать
http://torry.net/
вообще если вы умеете делать визуальные компоненты - то за один вечер вы сможете нарисовать кнопку.. Ну нужен опыт.
И ждут вас на этом пути многие овраги и ямы... ))
У меня в программе (Правда на Дельфи, но смысл один) используется похожее.
Использую компоненты EhLib. Там есть очень похожий на Excel-ный фильтр, но с ограниченным функционалом, в основном хорошо работающий локально в памяти. Никакие визуальные компоненты править/писать не придется.
Но для таблицы в 30 строк все это лишнее, зато когда в таблице 50000 строк (Хотя бы), или, не дай бог, пара миллионов строк, все это начинает ощутимо подтормаживать (Дико тормозить), приходится переносить фильтры в SQL запрос, а это требует парсинга SQL-запроса, чтобы вставить в него нужные where/having и т.д. и т.п.
Впрочем у меня это все писалось в крайне общем случае для сферической лошади, возможно у вас все это будет сильно проще.
P.S. У меня был EhLib 5.6/6.0, сейчас смотрю есть уже 9-й, правда дико дорогой. А вдруг там уже все это сделали и ничего делать не надо вообще (Помечтал немножко...)
У меня в программе (Правда на Дельфи, но смысл один) используется похожее.
Использую компоненты EhLib. Там есть очень похожий на Excel-ный фильтр, но с ограниченным функционалом, в основном хорошо работающий локально в памяти. Никакие визуальные компоненты править/писать не придется.
Но для таблицы в 30 строк все это лишнее, зато когда в таблице 50000 строк (Хотя бы), или, не дай бог, пара миллионов строк, все это начинает ощутимо подтормаживать (Дико тормозить), приходится переносить фильтры в SQL запрос, а это требует парсинга SQL-запроса, чтобы вставить в него нужные where/having и т.д. и т.п.
Впрочем у меня это все писалось в крайне общем случае для сферической лошади, возможно у вас все это будет сильно проще.
P.S. У меня был EhLib 5.6/6.0, сейчас смотрю есть уже 9-й, правда дико дорогой. А вдруг там уже все это сделали и ничего делать не надо вообще (Помечтал немножко...)
А в RXDGGrid случаем нет подобного? Итоговые всякие строки как в "умных" таблицах там есть, я использую. А фильтр скорее всего придется писать самому, т.к. это же разные компоненты - таблица только за внешнее отображение отвечает, а фильтруется уже сама таблица БД через SQL запросы...
мне бы понять, как рюшечки делать: запихнуть значок фильтр к столбцам и нарисовать окошко. обработку по-любому писать, так как там связанные таблицы. а то я сейчас даже смотрю на DBGrid и в печали: края не прилипают к краям формы...
Края к форме - привязку надо в редакторе anchors поставить и все будет прилипать, или align свойство
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Быстрый фильтр/сортировка в памяти делается очень просто - для отображения используется вторичная (виртуальная) таблица, которая не содержит данных, только ссылки на элементы первичной (реальной) таблицы. При изменении условия фильтра/сортировки нужно перезаполнить вторичную таблицу, это может занять ощутимое время (около секунды для миллиона строк), но зато скроллинг и прочие манипуляции пользователя тормозить не будут.
serbod сделать еще один dbgrid? а в колонках как можно добавить иконку фильтра? стандартный компонент работы с MySQL какой-то убогий - при любой проблеме все падает, есть смысл с zeos заморочиться или есть что лучше?
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
alegzz писал(а):сделать еще один dbgrid?
Боюсь, вы неправильно меня поняли. Поправочка - все просто, если вы умеете работать с реальными и виртуальными датасетами. А если хочется готовое, то выше накидали ссылок с компонентами. Они наверняка платные, но тут либо долго учиться и делать все самому, либо платить и получать результат сразу.
serbod, вроде понял - смутило то, что речь про таблицы шла. осталось попробовать. а по рюшечкам где посмотреть?
java73 писал(а):А в RXDGGrid случаем нет подобного?
Есть!
alegzz писал(а):мне бы понять, как рюшечки делать: запихнуть значок фильтр к столбцам и нарисовать окошко.
http://citforum.ru/programming/delphi/nogrid/
Вон сколько экстра-свойств есть у RxDBGrid, там это можно прикрутить я так думаю!


