如题:

解决方案 »

  1.   

    先把TreeView1与ImageList1相连结,在ImageList1中加入图标var
      N:TTreeNode;
    begin
        N:=TreeView1.Selected;
        N.ImageIndex:=1;
        N.StateIndex:=1;
        N.SelectedIndex:=1;
    end;
    可以显示第二个图标
      

  2.   

    TreeView1与ImageList1相连,ImageList1中加入图标OnGetImageIndex:procedure TForm1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
    begin
      if Node.Level < 1 then
        Node.ImageIndex := 0
      else Node.ImageIndex := 1;
    end;
      

  3.   

    不太明白你的意思,但可能确定,如果在同一个节点加两个图标,一个用于节点的展开,一个用于收缩,那么就可以将上面的代码改为:
    var
      N:TTreeNode;
    begin
        N:=TreeView1.Selected;
        N.ImageIndex:=1;
        N.StateIndex:=1;
        N.SelectedIndex:=2;
    end;
    //其中1和2对映imagelist中的图标序号.
    如果是不同的节点显示,只要在加载节点的后面加不同的图标就可以了.
    比如
    procedure TForm3.FormActivate(Sender: TObject); 
    var 
    catnode,child,son:ttreenode; 
    bm:string; 
    begin 
    treeview1.items.clear; 
    catnode:=treeview1.Items.AddFirst(nil,'全公司员工名单'); 
    catnode.ImageIndex:=0; 
    catnode.Selectedindex:=0; 
    table1.First; 
    while not table1.Eof do 
    begin 
    child:=treeview1.Items.AddChild(catnode,table1.Fields[1].Text); 
    child.ImageIndex:=1; 
    child.Selectedindex:=1; 
    bm:=table1.Fields[0].text; 
    table2.first; 
    while not table2.eof do 
    begin 
    if table2.Fields[0].text=bm then 
    begin 
    son:=treeview1.Items.addchild(child,table2.fields[1].text); 
    son.ImageIndex:=2; 
    son.Selectedindex:=2; 
    end; 
    table2.Next; 
    end; 
    table1.Next; 
    end; 
    end; 
      

  4.   

    TreeView1.Selected.ImageIndex:=1;
    TreeView1.Selected.StateIndex:=1;
    TreeView1.Selected.SelectedIndex:=1;