![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Визуализация Иерархической структуры [IB6.x]
Дима © (2008-04-29 14:14:00)Подскажите пожалуйста, как реализовать следующее:
есть таблица в БД (IB6.x), в ней такие поля
- id - идентификатор уникальный
- name - название подразделения
- link_to - идентификатор родителя
Т.е. простая иерархическая структура Подразделений.
Необходимо на Дельфи визуализировать в виде дерева, при чём полностью раскрытого, т.е. показать все листья дерева, при этом не использую рекурсии.
Как это сделать не меняя структуры таблицы?
MsGuns (2008-05-01 21:10:00) [1]1. Нечего советовать ставить сторонние компоненты там, где совершенно спокойно можно обойтись "родными" - в данном случае TTreeView
2. Отображение дерева можно вполне делать без "рекурсии", выбирая входящие в узел только по требованию пользователя банальным запросом, однако при этом не будет выполнено условие "сразу все дерево до листьев".
3. Алгоритм "деревянной" рекурсии прост как дерево ;) Примеров в сети масса.
Anatoly Podgoretsky (2008-04-30 22:05:00) [2]> Павел Калугин (30.04.2008 19:31:32) [32]
Количество минут равно глубине дерева, а при количестве минут 32 и более перезагружать компьютер, с сообщением куда ему идти.
Павел Калугин (2008-04-30 19:31:00) [3]
> Anatoly Podgoretsky © (30.04.08 16:23) [28]
угу. пройти тест- зачет по мануалу. в зависимости от баллов урезать права доступа:)
Павел Калугин (2008-04-30 19:28:00) [4]Ну на сервере запрещена? а на клиенте?
или такой же гемморой как у мня - клиента нет как факт?
тогда где дерево рисуешь?
про пару вызовов и все
а куда больше? сколько уровней вложенности у дерева? >3? это чтоза холдинг такой? я с трудом 7 насчитал, половину выдумал.
в чем сермяжная правда держать раскрытой более одной ветви дерева? Это действительно так необходимо? экрана хватает? Тем более что данные в отрисованном дереве могут менять другие пользователи? неполучится ли ситуации "на палубу вышел а палубы нет"
Дима (2008-04-30 18:04:00) [5]Удалено модератором
Примечание: Выражения выбираем, не в пивной
Anatoly Podgoretsky (2008-04-30 16:25:00) [6]> Павел Калугин (30.04.2008 16:06:27) [27]
Да и учесть, что русские любое руководство/лицензию, на любом языке в состоянии прочитать за 0,5 секунды, так что таймер встроить из расчета 1 минута на страницу.
Anatoly Podgoretsky (2008-04-30 16:23:00) [7]> Павел Калугин (30.04.2008 16:06:27) [27]
Хорошое дело и пускать только после письменного подтверждения, что прочитал.
Павел Калугин (2008-04-30 16:06:00) [8]
> Anatoly Podgoretsky © (30.04.08 15:48) [26]
А ещё проверка в коде при попытке добавить уровень, и если он N+1 то посылать такого добавлятеля читать руководство пользователя.
Anatoly Podgoretsky (2008-04-30 15:48:00) [9]> Павел Калугин (30.04.2008 09:10:19) [19]
Что бы не орали, должно быть или в ТЗ или в ТД указана максимальная глубина.
Ega23 (2008-04-30 11:15:00) [10]
> Эх завести что ли тему как размотать эту рекурсию в цикл:
sniknik давал тут скрипт...
Павел Калугин (2008-04-30 10:51:00) [11]спорить не буду.. факт что не хватило. Эх завести что ли тему как размотать эту рекурсию в цикл:)
Ega23 (2008-04-30 09:49:00) [12]
> помоему поболе но на него я и наступил:)
Даже вот так:
Nesting occurs when one stored procedure calls another. The nesting level is incremented when the called procedure begins execution, and it is decremented when the called procedure has finished. Exceeding the maximum of 32 nesting levels causes the entire calling procedure chain to fail. The current nesting level is stored in the @@NESTLEVEL function.
Павел Калугин (2008-04-30 09:32:00) [13]> [20] Reindeer Moss Eater © (30.04.08 09:21)
ну если раскрывать ветвь по клику то какая рекурсия? на королевство читать про DbTree своими руками. Там это и описано
а если размотать сразу все дерево на пять экранов то ....
> [21] Reindeer Moss Eater © (30.04.08 09:21)
Мы все учились понемногу когда-нибудь и как-нибудь (С)
Reindeer Moss Eater (2008-04-30 09:21:00) [14]Либон он просто не умеет излагать мысли на родном языке.
Reindeer Moss Eater (2008-04-30 09:21:00) [15]обратимся к истокам
А затем уже по нажатии на определённый элемент - сканировать только данное поддерево.
То есть он не собирается сразу строить все дерево на всю его глубину.
Первый шаг - отобразить верхний уровень иерархии.
При выборе конкретного узла - построить всех его дочек.
И так далее.
Павел Калугин (2008-04-30 09:10:00) [16]> [17] Reindeer Moss Eater ©
обратимся к истокам
- id - идентификатор уникальный
- name - название подразделения
- link_to - идентификатор родителя
Т.е. простая иерархическая структура Подразделений.
так вот ну не 2 так уж точно а до бесконечности. (ну почти)
0. Холдинг (рога и копыта)
1. предприятие в холдинге (ЧОП Шапокляк)
2. отраслевой филиал (Сыскное Агентство Лриска)
3. региональный филиал (Лариска в Московской Области)
4. районный филиал (Лариска в Красногорском районе)
5. местное отделение (Лариска в Опалихе)
5. управление (Вынюхивание)
6. отдел (запах денег)
7. группа (по нефтебаксам)
Хотя да 32 уровня набрать сложно, но можно. Заказчики они такие. Им только дай расширяемую структуру - моментально за диапазоны разумные вылетят и будут орать что ты им каку подложил за их кровные.
> [18] Ega23 © (30.04.08 07:54)
помоему поболе но на него я и наступил:)
толька задача веселее чем дерево подразделений собрать была... грубо есть список акций А. выбираем любые (самые дорогие) N. построить список всех возможных комбинаций от A[1] до А[N] такой что стоимость комбинации не превышает стоимости 1*A[1]+1*A[2]+...1*A[N]
от тут когда N 4- то через раз работало (от цен в зависимости) а при 5 уже стабильно за ограничение.
Ega23 (2008-04-30 07:54:00) [17]
> да какая религия. я в МС наступал на ограничения вложенности
> вызовов пытаясь рекурсивно построить вожможные комбинации
> из 3-х бмажек. из 3-х еще строило а из 4-х уже все. столько
> раз сама себя хранимка вызвать не могеть
>
Павель, не гони, ограничение на 32 вызова в глубину.
Reindeer Moss Eater (2008-04-30 01:49:00) [18]А затем уже по нажатии на определённый элемент - сканировать только данное поддерево.
У него вложенность - два уровня.
Павел Калугин (2008-04-30 01:33:00) [19]> [15] Игорь Шевченко © (30.04.08 00:44)
да какая религия. я в МС наступал на ограничения вложенности вызовов пытаясь рекурсивно построить вожможные комбинации из 3-х бмажек. из 3-х еще строило а из 4-х уже все. столько раз сама себя хранимка вызвать не могеть
Игорь Шевченко (2008-04-30 00:44:00) [20]
> но пользоваться рекурсией запрещено
религией ?