procedure TForm1.FormCreate(Sender: TObject);
var
 temnode,childnode:TTreeNode;
 i,j:integer;
begin
TreeView1.Items.Clear;
temnode:=TreeView1.Items.Add(TreeView1.Selected,PChar('长城公司'));for i:=0 to adodataset1.recordcount do
begin
TreeView1.Items.AddChild(temnode,adodataset1.FieldValues['name']);
end;
for j:=0 to 3 do
begin
ChildNode:=TreeView1.Selected.Item[i+1];
TreeView1.items.AddChild(ChildNode, '');
end;
 end;
end.
想实现
---公司

|-+营销部//点击‘+’号时再展开

解决方案 »

  1.   

    你在第二层循环中的addchild用的好象有问题,因为第一个字段表示的是你所要添加的接点的父亲节点,第二个字段表示的是你要添加的节点,可是你现在写的要添加的节点为空,这是什么意识啊?
      

  2.   

    var
      node1,node2,node3,node4:TTreenode;
      i,ii,iii:integer;
      glass1,class1 :string;
    begin
        treeview1.Items.Clear;
        node1:=treeview1.Items.Add(nil,'学校');
        node1.ImageIndex:=0;
        query1.Open;
        for i:=1 to query1.RecordCount do
        begin
         node2:=treeview1.Items.AddChild(node1,query1.FieldByName('glass').Value);
         node2.ImageIndex:=1;
         query2.Close;
         query2.SQL.Clear;
         query2.SQL.Add('select * from class where glass='+#39+query1.FieldByName('glass').Value+#39);
         query2.Open;
         for ii:=1 to query2.RecordCount do
          begin
           node3:=treeview1.Items.AddChild(node2,query2.FieldByName('class').Value);
           node3.ImageIndex:=2;
           query3.Close;
           query3.SQL.Clear;
           query3.SQL.Add('select * from student where glass='+#39+query1.FieldByName('glass').Value+#39+'and class='+#39+query2.FieldByName('class').Value+#39);
           query3.Open;
           for iii:=1 to query3.RecordCount do
           begin
           node4:=treeview1.Items.AddChild(node3,query3.FieldByName('name_student').Value);
           node4.ImageIndex:=3;
           query3.Next;
           end;       query2.Next;
           end;
           query1.Next;
         end;