BOM表,如下:
父阶 子阶 需求量
a b 1
a c 3
b d 1
c g 2
c E 8
.................如何得到表中任一物品BOM构成的树型结构?(即,以该物品为root的其各个子阶构成的树型结构)
用递归的方法该怎么实现?非常想要源码.http://community.csdn.net/Expert/topic/2849/2849392.xml?temp=.1997949
这里有个例子没完全看明白,应该可以,treenode参数是做什么用的?
父阶 子阶 需求量
a b 1
a c 3
b d 1
c g 2
c E 8
.................如何得到表中任一物品BOM构成的树型结构?(即,以该物品为root的其各个子阶构成的树型结构)
用递归的方法该怎么实现?非常想要源码.http://community.csdn.net/Expert/topic/2849/2849392.xml?temp=.1997949
这里有个例子没完全看明白,应该可以,treenode参数是做什么用的?
TTreerec = record
classNo: string; //子编号
Classnm: string; //类别名称
pclassno : String; //父类别.
end;procedure TSingleXc.AddItem(FTreeNode: TTreeNode; Classno: PTreerec;
Pclassno: string);
var
I,K:integer;
MyList:TList;
TempItem:PTreerec;
LTreeNode: TTreeNode;
begin
MyList:=Tlist.Create;
try
for i:=0 to FItemList.Count-1 do
Begin
TempItem:=PTreerec(Fitemlist.Items[i]);
if uppercase(TempItem.pclassno)=Pclassno then
MyList.Add(TempItem);
end;
For I:=0 to MyList.Count-1 do
Begin
For K:=0 to Fitemlist.Count-1 do
Begin
if uppercase(PTreerec(Mylist.Items[i]).classno)
=uppercase(Ptreerec(Fitemlist.Items[k]).classNo ) then
Begin
Fitemlist.Delete(k);
Break;
end;
end;
end;
for I:=0 to MyList.Count -1 do
Begin
TempItem:=PTreerec(Mylist.Items[i]);
LTreeNode:=TTreeNode.Create(nil);
LTreeNode:=Tv_class.Items.AddChild(FTreeNode,'['+Ptreerec(mylist.items[i]).classNo +']'+ Ptreerec(mylist.items[i]).Classnm);
if Ptreerec(mylist.items[i]).pclassno ='' then
LTreeNode.ImageIndex :=1
else
LTreeNode.ImageIndex :=2;
LTreeNode.SelectedIndex :=3;
//LtreeNode.Expand(True);
AddItem(LTreeNode,TempItem ,TempItem.classno ); //递归.
end;
finally
MyList.Free;
end;end;
TTreerec = record
classNo: string; //子编号
Classnm: string; //类别名称
pclassno : String; //父类别.
end;procedure TSingleXc.AddItem(FTreeNode: TTreeNode; Classno: PTreerec;
Pclassno: string);
var
I,K:integer;
MyList:TList;
TempItem:PTreerec;
LTreeNode: TTreeNode;
begin
MyList:=Tlist.Create;
try
for i:=0 to FItemList.Count-1 do
Begin
TempItem:=PTreerec(Fitemlist.Items[i]);
if uppercase(TempItem.pclassno)=Pclassno then
MyList.Add(TempItem);
end;
For I:=0 to MyList.Count-1 do
Begin
For K:=0 to Fitemlist.Count-1 do
Begin
if uppercase(PTreerec(Mylist.Items[i]).classno)
=uppercase(Ptreerec(Fitemlist.Items[k]).classNo ) then
Begin
Fitemlist.Delete(k);
Break;
end;
end;
end;
for I:=0 to MyList.Count -1 do
Begin
TempItem:=PTreerec(Mylist.Items[i]);
LTreeNode:=TTreeNode.Create(nil);
LTreeNode:=Tv_class.Items.AddChild(FTreeNode,'['+Ptreerec(mylist.items[i]).classNo +']'+ Ptreerec(mylist.items[i]).Classnm);
if Ptreerec(mylist.items[i]).pclassno ='' then
LTreeNode.ImageIndex :=1
else
LTreeNode.ImageIndex :=2;
LTreeNode.SelectedIndex :=3;
//LtreeNode.Expand(True);
AddItem(LTreeNode,TempItem ,TempItem.classno ); //递归.
end;
finally
MyList.Free;
end;end;
http://community.csdn.net/Expert/topic/3162/3162148.xml?temp=.2161066
E-mail:[email protected]