Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 выбор элементов дерева - есть готовое решение?  [new]
GrigoriyFomin
Member

Откуда:
Сообщений: 174
Есть каталог товаров с древовидной группировкой по типу товара (например:
-напитки,
--соки
--кофе
--чай
-блюда
--горячие
---первые
---вторые
--холодные
---салаты
---гарниры

Дерево хранится отдельно в виде ID, ParentID и название., у товара есть только ИД на нужную ветку товарного дерева (например, ИД ветки первые-горячие-блюда).
Может есть универсальное отлаженное решение как например, выбрать все товары нужной группировки? То есть есть некое дерево TreeView с галочками (множественный выбор), и таблица со списком товаров. Мы выбираем галочками нужные ветки (причем не только "листья", но и "ветки") и в таблицу попадают все товары, которые относятся к этим и всем потомкам ВЫБРАННЫХ элементов дерева. Понятно, что можно делать все с нуля - отслеживать появление/снятие галочки, рекурсивный перебор всех веток дерева и сборка строки для WHERE условия фильтрации. Но может есть более готовое и доступное решение? Задача-то типовая.

Сообщение было отредактировано: 28 мар 21, 23:54
29 мар 21, 00:01    [22301226]     Ответить | Цитировать Сообщить модератору
 Re: выбор элементов дерева - есть готовое решение?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

TTreeView
TVirtualTreeView

Posted via ActualForum NNTP Server 1.5

29 мар 21, 00:36    [22301229]     Ответить | Цитировать Сообщить модератору
 Re: выбор элементов дерева - есть готовое решение?  [new]
alexl06
Member

Откуда:
Сообщений: 28
XPCheckTreeView
30 мар 21, 09:06    [22301816]     Ответить | Цитировать Сообщить модератору
 Re: выбор элементов дерева - есть готовое решение?  [new]
alexl06
Member

Откуда:
Сообщений: 28
Напиши мне на почту, поделюсь
30 мар 21, 09:07    [22301817]     Ответить | Цитировать Сообщить модератору
 Re: выбор элементов дерева - есть готовое решение?  [new]
L_argo
Member

Откуда:
Сообщений: 1456
Все готовые решения будут унылы и с большими ограничениями.
Ловите момент установки галочки и добавляйте во временную таблицу ИД товаров, которых там еще нет.
30 мар 21, 09:10    [22301818]     Ответить | Цитировать Сообщить модератору
 Re: выбор элементов дерева - есть готовое решение?  [new]
DesWind
Member

Откуда:
Сообщений: 120
GrigoriyFomin,

Можно разделить ID на битовые поля, 110000 корневой элемент 111100 - ветка от корневого элемента 110000, 111111 - лист.

Это естественно накладывает ограничение на кол-во и вложенность. Но в некоторых случаях может помочь. Т.е. смысл битовых полей - можно по любому ID отследить всю цепочку дерева.
30 мар 21, 12:12    [22301933]     Ответить | Цитировать Сообщить модератору
 Re: выбор элементов дерева - есть готовое решение?  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4539
DesWind
GrigoriyFomin,

Можно разделить ID на битовые поля, 110000 корневой элемент 111100 - ветка от корневого элемента 110000, 111111 - лист.

Это естественно накладывает ограничение на кол-во и вложенность. Но в некоторых случаях может помочь. Т.е. смысл битовых полей - можно по любому ID отследить всю цепочку дерева.
Для чего эта цепочка? Если для того, чтобы отображать справа список товаров, входящих в текущую и все дочерние группы - так для этого надо просто при клике на элемент дерева через CTE получить плоский список этих групп (либо заблаговременно его получить для каждой группы, для скорости), и запрос товаров делать с фильтром group in (этот список).
30 мар 21, 12:29    [22301957]     Ответить | Цитировать Сообщить модератору
 Re: выбор элементов дерева - есть готовое решение?  [new]
DesWind
Member

Откуда:
Сообщений: 120
YuRock,

Я просто предложил решение поставленной задачи. Как выбрать ветку целиком с простым условием.
30 мар 21, 14:27    [22302034]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить