三个字段 creat table departTable(No1 int,name varchar(50),NoParent) 建立一个字段,用来记录它的父结点?试试看
表字段 Departmentid,Name,UpDepartmentid, Type PNodeInfo=^TNodeInfo; //指针类型,存储对应节点信息 TNodeInfo=Packed Record NodeId:String; //节点 NodeName:string; //节点名称 ParentId:string; //父节点 end; 构造 var QryTmp:TClientDataSet; MyNode:TTreeNode; TmpNodeInfo:PNodeInfo; begin try QryTmp:=TClientDataSet.Create(self); QryTmp.Data:= ClientDataSet1.Data; QryTmp.Filter:= 'UPDEPARTMENTID=''' + Id + ''''; QryTmp.Filtered:= True; QryTmp.First; while not QryTmp.Eof do begin New(TmpNodeInfo); TmpNodeInfo.Nodeid:=Trim(QryTmp.Fields[0].AsString); TmpNodeInfo.Parentid:=Trim(QryTmp.Fields[1].AsString); TmpNodeInfo.Nodename:=Trim(QryTmp.Fields[2].AsString); MyNode:=DTree.Items.AddChildObject(ParentNode,QryTmp.Fields[2].AsString,TmpNodeInfo); //把所有节点当作子节点遍历 CreateTree(QryTmp.Fields[0].AsString,MyNode,dtree); //递归调用 QryTmp.Next; end; finally freeandnil(QryTmp); end;遍历 var I:Integer; begin //处理 if vNode.HasChildren then for I := 0 to vNode.Count-1 do begin preorderDel(vNode.Item[i]); end;
creat table departTable(No1 int,name varchar(50),NoParent)
建立一个字段,用来记录它的父结点?试试看
Departmentid,Name,UpDepartmentid,
Type
PNodeInfo=^TNodeInfo; //指针类型,存储对应节点信息
TNodeInfo=Packed Record
NodeId:String; //节点
NodeName:string; //节点名称
ParentId:string; //父节点
end;
构造
var
QryTmp:TClientDataSet;
MyNode:TTreeNode;
TmpNodeInfo:PNodeInfo;
begin
try
QryTmp:=TClientDataSet.Create(self);
QryTmp.Data:= ClientDataSet1.Data;
QryTmp.Filter:= 'UPDEPARTMENTID=''' + Id + '''';
QryTmp.Filtered:= True;
QryTmp.First;
while not QryTmp.Eof do
begin
New(TmpNodeInfo);
TmpNodeInfo.Nodeid:=Trim(QryTmp.Fields[0].AsString);
TmpNodeInfo.Parentid:=Trim(QryTmp.Fields[1].AsString);
TmpNodeInfo.Nodename:=Trim(QryTmp.Fields[2].AsString);
MyNode:=DTree.Items.AddChildObject(ParentNode,QryTmp.Fields[2].AsString,TmpNodeInfo); //把所有节点当作子节点遍历
CreateTree(QryTmp.Fields[0].AsString,MyNode,dtree); //递归调用
QryTmp.Next;
end;
finally
freeandnil(QryTmp);
end;遍历
var
I:Integer;
begin
//处理
if vNode.HasChildren then
for I := 0 to vNode.Count-1 do
begin
preorderDel(vNode.Item[i]);
end;
procedure TFrm_department.CreateTree(Id: String; ParentNode: TTreeNode ;DTree:TTreeView);