Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.18;
Скачать: CL | DM;

Вниз

TTreeview ???   Найти похожие ветки 

 
Dr. Web ©   (2002-02-27 13:11) [0]

Извеняюсь за тупой вопрос, но с Деревьями до сих пор не сталкивался...
Вопрос вот какой
Есть два тривьюва
нужно к Item"у одного добавить все дерево из другого,
а у меня не получается....
(думаю есть более простой вариант чем перебор всех чайлдов в другом Вьюве и создание схожих итемов в первом вьюве)
помогите плз.


 
troits ©   (2002-02-27 13:32) [1]

IMHO, другого пути нет.
TTreeView - просто оболочка над соответствующим Windows - контролом, поэтому, боюсь, придется делать именно проходом по исходному дереву.


 
pasha_golub ©   (2002-02-27 14:30) [2]

Надо чтобы в первом дереве был один родитель-item, тогда его можно просто добавить во второй!


 
Dr. Web ©   (2002-02-27 16:39) [3]

pasha_golub
так и есть
рождитель во втором вьюве один


 
troits ©   (2002-02-27 17:24) [4]

Непонятно, что значит

>pasha_golub © (27.02.02 14:30)
>"один родитель-item"

>Dr. Web © (27.02.02 16:39)
>рождитель во втором вьюве один

Это вы о чем, о корне дерева, что - ли, который просто по определению дерева один?


 
Song ©   (2002-02-27 17:31) [5]

Да, недавно была такая же проблема. Ответ удручающий: только перебором исходного с построением такой же структуры в результирующем дереве. Assign и AssignTo для TTreeView не работают :( есть MoveTo, но он не переносит детей (это делает только аист :))) ) вообщем MoveTo переносит только несколько свойств исходного в результирующее дерево, подветви он не переносит.


 
Набережных С.   (2002-02-27 17:42) [6]

http://www.delphikingdom.com/asp/answer.asp?IDAnswer=9129


 
Dr. Web ©   (2002-02-27 18:02) [7]

Набережных С.
пасибки щас буду пробовать :)


 
Dr. Web ©   (2002-03-01 11:04) [8]

Попробовал процедурку, которую предоставил Наб ережных С.
и вот что у меня получилось
делает копию чайлдов только первого уровня...
возле тех, у которых есть свои чайлды - стоят плюсики
НО
дальше они не открываются :(
пробовал смотреть что за прикол
так у чайлдов то Итем Каунт = 0 8-[ ]


 
Song ©   (2002-03-01 16:49) [9]

Слушай, я когда писал копирование ручками, я и не знал, что есть возможность более легко, потому что все методы Assign у меня выдавали AE. Поэтому я написал процедуру сам.
Вот алгоритм:
1.Берёшь первую ветку. Создаёшь ветку с таким названием в
результирующем дереве.
2.Смотришь детей. Если есть проходишь по ним в цикле созавая таких же в результирующем.
3. Независимо от того, были дети или нет, делаешь GetNextSibling и переводишься на следющую ветвь.
4. Делаешь шаг 1.

Я конечно могу тебе её прислать, но адаптировать лень, она сделана под конкретное исходное дерево и под конкретное результирующее, поэтому там сразу трудно её сделать, чтобы она у тя пошла сразу Ok.


 
Набережных С.   (2002-03-01 17:11) [10]


> Dr. Web © (01.03.02 11:04)

Ну давай, показывый, чего начудил.


 
Polevi ©   (2002-03-01 17:39) [11]

procedure TForm1.InsertTreeView(DestTreeView:TTreeView;DestNode, SourNode: TTreeNode);
var
dn,n:TTreeNode;
begin
dn:=DestTreeView.Items.AddChild(DestNode,SourNode.Text);
n:=SourNode.getFirstChild;
while Assigned(n) do
begin
InsertTreeView(DestTreeView,dn,n);
n:=SourNode.GetNextChild(n);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
n:TTreeNode;
begin
n:=SourTree.Items.GetFirstNode;
while Assigned(n) do
begin
//добавляем в первую ветку дерева-получателя (можно передать любую)
InsertTreeView(DestTree,DestTree.Items[0],n); n:=n.GetNextSibling;
end;
end;


 
Dr. Web ©   (2002-03-04 10:29) [12]

ВСЕМ ПАСИБКИ!!!!!!!!!!!!!!!!!!!
разобрался!!!!! :)
уже все работает, спасибо всем, кто откликнулся
процедура, которую предоставил Набережных С. РАБОТАЕТ КРУТО
Пример от Polevi © тоже работает, НО она только копирует сам вид дерева, без даных, которые еще зашити в поле data...
Разобрался, а проблемка была не в даных мне примерах с этого форума
просто я использовал ТрииВью, из примеров с IB.demo.ru
(древовидные даные)а там просто в тривью чайлды добавлялись по мере открытия каждого узла....
решил просто: в процедуру копирования добавил строчку построения даного узла и все!!! :)))
а задача у меня была такая:
есть мастер и детаил таблица (древовидные даные)
НУЖНО ЭТИ ДАНЫЕ ОТОБРАЗИТЬ в одном тривьюве :)
одна таблица справочник типов абонентов, а другая - собственно абоненты и ихние подразделы... все получилось
Еще раз спасибо за помощь!!!!



Страницы: 1 вся ветка

Текущий архив: 2002.03.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
3-57336
undersun
2002-02-19 19:55
2002.03.18
Народ как узнать на клиенте MS-SQL что в записи в базе изменились


14-57518
Natalie
2002-02-05 11:22
2002.03.18
Термин!


3-57329
Dim
2002-02-18 09:18
2002.03.18
Нет сортировки по Order by field


1-57466
shane54
2002-03-02 19:46
2002.03.18
Передача параметров в функцию


7-57531
Snake2000
2001-12-17 16:35
2002.03.18
COM rate