function CreateClassTree(aParent: TTreeNode; Level: integer; SLevel, SText,Scode: TStrings;aClassTree:TTreeNodes;aLevelWord:String): boolean; var I:integer; TempNode:TTreeNode; begin Result:=False; //TempNode:=TTreeNode.Create(Nil); For i:=0 to Slevel.Count-1 do begin //添加子结点 //是否符合级别 if length(Slevel.Strings[i])=(level+1)*3 then if level=0 then begin TempNode:=aclassTree.Add(aparent,sText.Strings[i]+'('+Scode.Strings[i]+')'); CreateClassTree(tempnode,level+1,Slevel,stext,Scode,aclasstree,Slevel.Strings[i]); Result:=True; end else begin if copy(slevel.Strings[i],0,level*3)=aLevelWord then begin TempNode:=aclassTree.AddChild(aparent,sText.Strings[i]+'('+Scode.Strings[i]+')'); CreateClassTree(tempnode,level+1,Slevel,stext,sCode,aclasstree,Slevel.Strings[i]); Result:=True; end; end; end; //tempnode.Free;end;//深度优先算法建子树Function CreateBomTree(aParent:TTreeNode;aTblBomCName,aMFieldName,aCFieldName,aRootName:String;aAdoConn:tAdoconnection;aTree:TTreeNOdes):Boolean; var i:integer; TempNode:TTreeNode; TempQry:TAdoQuery; begin Result:=False; TempQry:=TAdoQuery.Create(nil); Try //找子结点 TempQry.Active:=False; TempQry.SQL.Clear; TempQry.SQL.Add('Select '+aCFieldName); TempQry.SQL.Add(' From '+aTBlBomCName); Tempqry.sql.Add(' where '+aMFieldName+'='''+aRootName+''''); TempQry.Active:=true; //递归找子树 if TempQry.RecordCount>0 then begin TempQry.FindFirst; for i:=1 to TempQry.RecordCount do begin TempNode:=aTree.AddChild(aParent,TempQry.Fieldbyname(aCFieldName).AsString); CreateBomTree(TempNode,atblBomcName,aMFieldName,aCFieldName,TempNode.Text,aAdoconn,aTree); TempQry.Next; end; end; result:=True; Finally TempQry.Free; end;end;
Level: integer; SLevel, SText,Scode: TStrings;aClassTree:TTreeNodes;aLevelWord:String): boolean;
var
I:integer;
TempNode:TTreeNode;
begin
Result:=False; //TempNode:=TTreeNode.Create(Nil); For i:=0 to Slevel.Count-1 do
begin
//添加子结点
//是否符合级别
if length(Slevel.Strings[i])=(level+1)*3 then
if level=0 then
begin
TempNode:=aclassTree.Add(aparent,sText.Strings[i]+'('+Scode.Strings[i]+')');
CreateClassTree(tempnode,level+1,Slevel,stext,Scode,aclasstree,Slevel.Strings[i]);
Result:=True;
end
else
begin
if copy(slevel.Strings[i],0,level*3)=aLevelWord then
begin
TempNode:=aclassTree.AddChild(aparent,sText.Strings[i]+'('+Scode.Strings[i]+')');
CreateClassTree(tempnode,level+1,Slevel,stext,sCode,aclasstree,Slevel.Strings[i]);
Result:=True;
end;
end;
end;
//tempnode.Free;end;//深度优先算法建子树Function CreateBomTree(aParent:TTreeNode;aTblBomCName,aMFieldName,aCFieldName,aRootName:String;aAdoConn:tAdoconnection;aTree:TTreeNOdes):Boolean;
var
i:integer;
TempNode:TTreeNode;
TempQry:TAdoQuery;
begin
Result:=False;
TempQry:=TAdoQuery.Create(nil); Try
//找子结点
TempQry.Active:=False;
TempQry.SQL.Clear;
TempQry.SQL.Add('Select '+aCFieldName);
TempQry.SQL.Add(' From '+aTBlBomCName);
Tempqry.sql.Add(' where '+aMFieldName+'='''+aRootName+'''');
TempQry.Active:=true; //递归找子树
if TempQry.RecordCount>0 then
begin
TempQry.FindFirst;
for i:=1 to TempQry.RecordCount do
begin
TempNode:=aTree.AddChild(aParent,TempQry.Fieldbyname(aCFieldName).AsString);
CreateBomTree(TempNode,atblBomcName,aMFieldName,aCFieldName,TempNode.Text,aAdoconn,aTree);
TempQry.Next;
end;
end;
result:=True;
Finally
TempQry.Free;
end;end;