2
alexsalexs писал(а):вот честно, ни разу не понадобились такие выкрутасы.
ну согласитесь - если не понадобилось вам - это не значит, что подобное не нужно никому... оно ж ведь людей много - не вы один

.
alexs писал(а):Если есть желание - присоединяйся к доработкам компонентов. Будет и тебе счастье...
с удовольствием бы. если бы не куча всего, что мне приходится делать. грид+дерево - это лишь одна из небольших частей. важных, но не единственных. если не получится иначе (или в принципе не определимся с переходом в иную среду разработки), то можно заюзать и VirtualTree. хотя имхо - это хоть и навороченная вещь, но не столь удобная как то что сделано в EhLib.
alexs писал(а):Ну на самом деле вариант с группировкой решается на базе стандарного грида достаточно просто. Дополнительное поле + Ручная отрисовка колонки + Фильтры данных.
на самом деле - все это будет не так хорошо работать как вам думается:
- с отрисовкой еще надо солидно повозиться если хочется, что бы было все цивильно. речь ведь не идет о 1-2 уровнях. а о довольно крупных деревьях с вложениями 10-20 и более уровней. проводить предварительный рассчет по всем полям что бы определить отступ - потребует времени.
- одним полем не факт что одойтись. возможно 2 или 3 (возможно больше - не обдумывал еще досконально). потому как будет желательно хранить уровень, флаг открыт/закрыт, и т.п.
- фильтры. ко всему вышше сказанному - для фильтра надо будет построить те самые поля, определиться с фильтрующим полем (полями), и произвести саму процедуру фильтра. что не есть шустро. потому как, опять же, речь не идет о деревьях в 10-20 позиций. а это 50-60 тысяч записей. возможно будет больше (в планах 100-120 т.з.). повесить это все + фильтр на функционал обычного датасета (пусть и в памяти) - нерационально и, возможно, - тормозно. а если поверх этого надо еще и пользовательскую фильтрацию наложить... ?
по сути - надо делать именно структуру дерева в памяти, со всем его типичным функционалом, связывать элементы дерева с записями датасета, дорабатывать отрисовку грида при подобном деле. собственно все это и сделано в EhLib.
2
signвот как то так это выглядит в ehlib-е. убраны горизонтальные линии, иконки по OnPaint (хотя можно и иначе. мне так было проще)
в остальном (в простом случае) - указать SQL, связывающие поля дерева и всё... (у мя чуть сложнее - для шустрой загрузки)
