Вверх ↑
Ответов: 485
Рейтинг: 86
#1: 2009-06-07 20:34:17 ЛС | профиль | цитата
afandi писал(а):
объязательно ли, что бы индексы элементов в дереве были без пропусков и шли последовательно?

Необязательно. Нужно только следить чтобы id были уникальными и, на момент добавления ноды, parent id уже должен существовать.
Схема не работает потому, что не выполняется ни первое, ни второе условие.
В схеме ноды пытаются добавляться в таком порядке:

заголовок - id - parent id - icon
1 - 0 - 1 - 1
7 - 0 - 7 - 1
26 - 0 - 26 - 1
1) Как видно, все id равны нулю (не уникальны!)
2) На момент добавления, например, первой ноды 1 - 0 - 1 - 1 не существует ноды с id = 1!
* Самая первая нода должна иметь parent id = -1 (добавиться в корень дерева).
Вот небольшой пример построения дерева:

Add(MainForm,14150206,49,119)
{
Width=287
Height=380
Position=1
}
Add(TreeViewTrain,2363091,374,188)
{
@Hint=#24:Формат элементов дерева:|21:pid id icon node data|
Left=5
Top=5
Width=195
Height=335
Color=65535
Font=[MS Sans Serif,8,1,0,1]
WinStyle=4
Name="tree"
Tooltips=0
IconsManager="icon_tree"
CaptionIndex=3
IDIndex=1
IconIndex=2
UseHashMap=0
AddHint(-61,-43,157,26,@Hint)
}
Add(IconsManager,13774152,98,119)
{
Name="icon_tree"
Icons=['Icon'=[ZIPFE02000078DAB5923D12C22010859FD19994A6B235A5B7D023D16149875DAE94A3585AA64B0A477C0B4CF829B4D1070FF8969D81B001366C7DDF71DCE1D100070027BAA72FB4C445A6C1AA0EB98CEF30264CD224C4611C47469CEF702E4CD22424C337B5B755D6B359B7AC12B64BDC3656D7AC2AD635ABBFF0C02FCBD9705130EF993317BA60E7E68F5CE597E7BBA829B28E5281B3F7F4EC9284714D09B37FC0C4837091A0CA0A0DC279C2E44BA693EAF2CAB177E04C1FE93DDDD25B7A43E317964B2CF4937E21FE8A269CFD06A5AC1125]]
}
Add(TVT_AddNode,8712008,322,189)
{
TreeView="tree"
}
Add(Button,12073949,51,175)
{
Left=210
Top=5
Width=65
Caption="построить"
link(onClick,11417079:doFor,[])
}
Add(MT_AddData,13972430,259,189)
{
Count=5
InputMT=3
link(onAdd,8712008:doAddNode,[])
link(Data1,9325568:Random,[])
link(Data3,11349597:Value,[])
link(Data4,14148871:Value,[])
link(Data5,7986743:Value,[])
}
Add(For,11417079,96,175)
{
End=100
link(onEvent,177049:doEvent1,[])
}
Add(Memory,14148871,280,56)
{
}
Add(StrCat,1742255,231,56)
{
Str1="node"
link(onStrCat,14148871:doValue,[])
}
Add(Hub,177049,142,175)
{
OutCount=3
link(onEvent1,1742255:doStrCat,[(168,181)(168,62)])
link(onEvent2,4041870:doOperation,[(175,188)(175,160)])
link(onEvent3,13972430:doAdd,[])
}
Add(Memory,11349597,273,96)
{
Default=Integer(0)
}
Add(Memory,7986743,287,15)
{
Default=String(www)
}
Add(Math,4041870,189,154)
{
OpType=1
Op2=1
ResultType=0
link(onResult,11671199:doEvent1,[])
}
Add(Random,9325568,259,140)
{
Min=-1
Point(doMax)
}
Add(Hub,11671199,231,154)
{
link(onEvent1,9325568:doMax,[])
link(onEvent2,9325568:doRandom,[(252,167)(252,146)])
}




карма: 0

1
Голосовали:Andrey