在click事件发生后
selected才会变为当前点击的对象,所以应该是这样的
建议写在onmousedown里,如下:
var
  ln:Ttreenode;
begin
ln:=GetNodeAt(x,y);
if ln.ImageIndex =0 then
                ln.ImageIndex :=1
        else
                ln.ImageIndex :=0;
end;

解决方案 »

  1.   

    procedure TForm1.TreeView1Collapsed(Sender: TObject;
      Node: TTreeNode);
    begin
        node.ImageIndex:=0; //收合是的图标
    end;procedure TForm1.TreeView1Expanded(Sender: TObject;
      Node: TTreeNode);
    begin
        node.ImageIndex:=1;//展开是图标
    end;
      

  2.   

    处理OnChange事件!
    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
         If Node.Selected Then Node.ImageIndex := 1
         Else Node.ImageIndex := 0;
    end;
      

  3.   

    //SelectedIndex选择时的图标索引
    if treeview1.Selected.ImageIndex =0 then begin
                    treeview1.Selected.ImageIndex :=1
                    TreeView1.Selected.SelectedIndex := 1;
    end else begin
                    treeview1.Selected.ImageIndex :=0;
                    TreeView1.Selected.SelectedIndex := 0;
    end;
      

  4.   

    参照楼上的方法但应使用如下的属性:
    ImageIndex 
    SelectedIndex
      

  5.   

    为每一个节点设置ImageIndex和SelectIndex属性!
      

  6.   

    各位大虾
    问题解决,我在之后加                treeview1.Repaint ;
    就行啦