编号 名称 父级ID 所属级数 是否显示
ID NAME FATHER SLEVEL SLIST
01 三巾 0 1 0
0101 方巾 01 2 1
0102 毛巾 01 2 1
0103 浴巾 01 2 1
02 床品 0 1 0
0201 好梦多 02 2 1
0202 欧莱丝 02 2 1
0203 枕套 02 2 1
0204 床单 02 2 1
以上是数据,想让它显示在Treeview里面,表名SPLB
谁能帮我提供源码,谢了
急用
ID NAME FATHER SLEVEL SLIST
01 三巾 0 1 0
0101 方巾 01 2 1
0102 毛巾 01 2 1
0103 浴巾 01 2 1
02 床品 0 1 0
0201 好梦多 02 2 1
0202 欧莱丝 02 2 1
0203 枕套 02 2 1
0204 床单 02 2 1
以上是数据,想让它显示在Treeview里面,表名SPLB
谁能帮我提供源码,谢了
急用
后来又把第一个方法该了一下,如下:
procedure TForm1.newtreeview(Node:TTreeNode;ParentID:integer);
var
tmpNode : TTreeNode;
ADOquery1 : TADOQuery;
p : PMyrecord;
begin
ADOQuery1 := TADOQuery.Create(self);
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Text := 'select * from ²¿Ãűí where Éϼ¶²¿ÃÅID='+inttostr(ParentID);
ADOQuery1.open;
if ADOQuery1.recordcount > 0 then
begin
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
new(p);
p.ID := ADOQuery1.FieldByName('ID').AsInteger;
p.name := ADOQuery1.FieldByName('²¿ÃÅÃû³Æ').AsString;
p.ParentID := ADOQuery1.FieldByName('Éϼ¶²¿ÃÅID').AsInteger;
tmpNode := TreeView1.Items.AddChildObject(Node,p.name,p);
Newtreeview(tmpNode,ADOQuery1.FieldByName('ID').AsInteger);
ADOQuery1.next;
//dispose(p);//Ò»¶¨ÒªÈ¥µôÕâÌõÓï¾ä£¬²»È»µÄ»°£¬TreeviewÖеÄDataÒ²±»disposeµôÁË¡£
end;
end;
ADOQuery1.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Treeview1.Items<>nil then
Treeview1.Items.Clear;
newtreeview(nil,ADOTable1.FieldByName('Éϼ¶²¿ÃÅID').AsInteger);
end;
procedure TForm1.newtreeview(Node:TTreeNode;ParentID:integer);
var
tmpNode : TTreeNode;
ADOquery1 : TADOQuery;
p : PMyrecord;
begin
ADOQuery1 := TADOQuery.Create(self);
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Text := 'select * from 部门表 where 上级部门ID='+inttostr(ParentID);
ADOQuery1.open;
if ADOQuery1.recordcount > 0 then
begin
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
new(p);
p.ID := ADOQuery1.FieldByName('ID').AsInteger;
p.name := ADOQuery1.FieldByName('部门名称').AsString;
p.ParentID := ADOQuery1.FieldByName('上级部门ID').AsInteger;
tmpNode := TreeView1.Items.AddChildObject(Node,p.name,p);
Newtreeview(tmpNode,ADOQuery1.FieldByName('ID').AsInteger);
ADOQuery1.next;
//dispose(p);//一定要去掉这一句话,不然的话,Treeview中的Data也被dispose掉了
end;
end;
ADOQuery1.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Treeview1.Items<>nil then
Treeview1.Items.Clear;
newtreeview(nil,ADOTable1.FieldByName('上级部门ID').AsInteger);
end;
type
PMyrecord = ^Myrecord;
Myrecord = record
ID : integer;
name:string;
ParentID : integer;
end;//end of record