表名:TableName
字段:NodeNO(主键),ParentNO,NodeLevel,NodeType,NodeName
控件:Treeview
在生成树的同时我想让每个节点记下自己的NodeNO 不知各位大侠有什么好办法没?
字段:NodeNO(主键),ParentNO,NodeLevel,NodeType,NodeName
控件:Treeview
在生成树的同时我想让每个节点记下自己的NodeNO 不知各位大侠有什么好办法没?
还是“记下 每个节点的NodeNO”……
用指针好像可以 可我不会取出信息,帮我看看TTreeViewData = record
indexID : Integer;
ParentID : Integer;
NodeType: Integer;
end;procedure TSQLTV.CreateTreeView(Node: TTreeNode; SQLStr: String; var TreeView: TTreeView);
var
tmpQ: TADOQuery;
tmpNode: TTreeNode;
TVData: ^TTreeViewData;
begin
tmpQ := TADOQuery.Create(nil);
tmpQ.ConnectionString := ConStr; try
with tmpQ do
begin
Close;
SQL.Clear;
SQL.Add('select * from TreeView where ParentNo='+SQLStr);
try
Open;
except
;
end; if RecordCount > 0 then
begin
First;
while not Eof do
begin
new(TVData);
TVData.indexID := FieldByName('NodeNo').AsInteger;
TVData.ParentID := FieldByName('ParentNo').AsInteger;
tmpNode := Treeview.Items.AddChild(Node,FieldByName ('NodeName').Asstring);
TVData.NodeType := FieldByName('NodeType').AsInteger;
tmpNode.Data := TVData;
CreateTreeView(tmpNode, FieldByName ('Index_id').Asstring, TreeView);
Next;
end;
end;
end;
finally
tmpQ.Free;
end;
end;//从库中读取数据形成TreeView
procedure TSQLTV.OutputTreeView(var TreeView: TTreeView);
var
Node: TTreeNode;
tmpQ: TADOQuery;
TVData: ^TTreeViewData;
begin
TreeView.Items.Clear;
try
tmpQ := TADOQuery.Create(nil);
tmpQ.ConnectionString := ConStr;
except
;
end; tmpQ.Close;
tmpQ.SQL.Clear;
tmpQ.SQL.Add('select * from TreeView where parentNO = 0');
try
tmpQ.Open;
except
;
end; if tmpQ.RecordCount > 0 then
begin
tmpQ.First;
while not tmpQ.Eof do
begin
new(TVData);
TVData.indexID := tmpQ.FieldByName('NodeNo').AsInteger;
TVData.ParentID := tmpQ.FieldByName('ParentNO').AsInteger;
TVData.NodeType := tmpQ.FieldByName('NodeType').AsInteger;
Node := Treeview.Items.Add(nil, tmpQ.FieldByName ('NOdename').Asstring);
Node.Data := TVData;
CreateTreeView(node, tmpQ.FieldByName ('NodeNo').Asstring, TreeView);
tmpQ.Next;
end;
end;
end;
2、用AddChildObject(上级树, 当前树要显示的标题, 记录的指针变量);
就行了!