Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Drag&Drop деревьев [D5, Paradox]


Денис Курьин ©   (2003-06-02 14:27:00) 

Доброго времени суток, уважаемые Мастера!
Подскажите, как осуществить Drag&Drop из одного дерева в другое с перекодировкой дерева Tree_2 в зависимости от структуры перетаскиваемой ветви дерева Tree_1, а также копированием соответствующих данных, хранящихся в других таблицах, связаных с деревом Tree_1?


Карелин Артем   (2003-06-03 14:43:00) [1]

Скажем так: у веток деревьев есть некое свойство TTreeNode.Data
Так вот туда при создании ветки можно запихать идентификатор ветки.
Дальше можно пройтись по всем дочерним элементам нужной ветки и получив нужные идентификаторы поместить на новое место.


Денис Курьин   (2003-06-02 15:18:00) [2]

Ну, вроде вкурил, но еще каша в голове, попробую, может и получится, всем огромное спасибо


Соловьев   (2003-06-02 15:10:00) [3]

ну когда ты сохранишь первый уровень, то получишь новые id этих элементов, вот их и присвоишь следующему уровню вместо старых


Денис Курьин   (2003-06-02 15:07:00) [4]

а как быть с перекодировкой дерева-получателя, ведь мне надо точно такую же структуру построить


Соловьев   (2003-06-02 15:00:00) [5]


> этой ветви 30 000 потомков,

а ты по уровням переноси, а не сразу всех.


Денис Курьин   (2003-06-02 14:56:00) [6]

а если у этой ветви 30 000 потомков, тогда как, а топтаться задача будет на 486 :-(


Соловьев   (2003-06-02 14:54:00) [7]


> куда мне промежуточные результаты складывать,

динамический массив.


Денис Курьин   (2003-06-02 14:53:00) [8]

А как это будет выглядеь в целом, куда мне промежуточные результаты складывать, промежуточная таблица не желательна.


Zacho   (2003-06-02 14:52:00) [9]


> Денис Курьин © (02.06.03 14:42)

В LocalSQL - никак. В разных SQL-серверах есть разные способы для этого, а для Парадокса только рекурсивной процедурой.


Соловьев   (2003-06-02 14:51:00) [10]


> Денис Курьин © (02.06.03 14:42)

в парадоксе очень тяжело работать с деревьми, так как нельзя сделать ХП с рекурсией, прийдется писать в цыкле запрос вида
select *
from table
where id=:idparent


Денис Курьин   (2003-06-02 14:42:00) [11]

Как получить SQL-запросом всех детей ветви, если кодировка деревьев следующая:
Id Parent Name
1 0 111
2 0 222
3 1 111_333
4 3 333_444
Допустим, я хочу получить ветвь с Id = 1 и всех ее потомков (Id=1,3,4)
А потом эту ветку засунуть в другое дерево но c Id = 15?


Карелин Артем   (2003-06-02 14:34:00) [12]

Вообще-то деревья в базе можно хранить туевой хучей способов. Ответ можно дать только при более подробной формулировке.
Вопрос на засыпку: если можно построить дерево из содержимого некой базы и получить связанные с деревом даные, то почему нельзя получить эти данные для ветки и засунуть в другое место?


Наверх

Титульная страница Поиск, карта сайта Написать письмо