-
kashey © (29.10.18 08:47) [0]Всем привет. Строю дерево в TreeView из ХМL (рекурсивно). "Приехал" новый ХML. Вопрос в том, как не удалять полностью старое дерево, чтобы построить новое. Нужно как-то сопоставить старое дерево с новым, недостающие узлы построить, а лишнее удалить. Это нужно для того, чтобы открытые узлы не "схлопывались" при загрузке нового дерева и желательно новые ноды подсветить другим цветом до следующего прихода XML. Подскажите где это можно подсмотреть?
-
anonims (29.10.18 10:25) [1]1.node.Text = ....
2.d:=node.Data;
if TDOMnode(d).... =newdom..... then begin
...
end;
3.if olddomnode.... =newdomnode.... then begin
node:=FindOfDom(oldnodedom);
node.Data:=newdomnode);
end;
4.x:=olddom.LocateDOMNode(newdomnode); // Нужно как-то сопоставить старое дерево с новым,
if x=nil then begin
CreateTreeNode(newdomnode); // недостающие узлы построить,
//желательно новые ноды подсветить другим цветом
end
else begin
UpdateTreeNode(x, newdomnode);
end;
x:=newdom.LocateDOMNode(olddomnode);
if x=nil then begin
DeleteTreeNode(x); // а лишнее удалить
end
else begin
UpdateTreeNodeInverse(olddomnode, x);
end; -
kashey © (29.10.18 14:05) [2]А вообще существует не визуальное дерево?. ttreenodes вроде как-бы, но его таким образом не создашь: MyNodes.TTreeNodes.create(nil). Все равно вместо нил нужно указать конкретный TreeView. ???
-
kashey © (29.10.18 16:43) [3]
> anonims (29.10.18 10:25) [1]
Здорово !!! Давно не мог это найти. только компилятор ругается на "...." что это? Четыре уровня дерева вверх или вниз? -
kashey © (29.10.18 16:47) [4]Вообщем как сравнить придумал, вот только как хранить два дерева без скрытого TreeView не придумал. Писать класс "самодельного" дерева пока не спешу, жду ваших рекомендаций.
-
а что по твоему (29.10.18 17:13) [5]А вообще существует не визуальное дерево?.
xml dom document это и есть дерево. не визуальное, но с ветками. -
anonims (30.10.18 13:53) [6]
> только компилятор ругается на "...." что это?
Нужно как-то сопоставить старое дерево с новым
> Четыре уровня дерева вверх или вниз?
четыре РАЗНЫХ наброска кода
Вар 2. это по сути ХРАНЕНИЕ DOM-дерева(узла) "внутри" Tree-дерева(узла)
> как хранить два дерева без скрытого TreeView не придумал