生成树的问题? 表名:TableName字段:NodeNO(主键),ParentNO,NodeLevel,NodeType,NodeName控件:Treeview请问各位大侠如何生成树,树的层数不限,最好不用NodeLevel字段,如果实在不行也可用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此程序没有用NodeLevel: 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;//从库中读取数据形成TreeViewprocedure 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; var TVData : ^TTreeViewData; vType: Integer;begin TVData := TreeView.Selected.Data; if TVData <> nil then begin vType := TVData.NodeType; end;end; 用ODAC的OraQuery查询到DBGridEh显示,怎样实现点击列标题实现排序? 200分!如何给Richedit加上英文单词拼写检查功能? 谁知道广州哪里有捷克语翻译 求书? 求发电子邮件的程序????? 有分 简单问题!dll怎么生成啊? "运行时错误'429':ActiveX部件不能创建对象"是怎么回事,谢谢. 100分求教MDI和窗口溶合 问题 关于sizeof()? 300分...DELPHI及SQL SERVER高手请进! 一个关于asp和delphi传递消息的紧急问题(100分,解决了马上给!) 请教:关于WEBBROWSER的一个问题。
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;
TVData : ^TTreeViewData;
vType: Integer;
begin
TVData := TreeView.Selected.Data;
if TVData <> nil then
begin
vType := TVData.NodeType;
end;
end;