想使TTreeView某个节点图标在展开时变为另一个,合上后又变回原来的,
不知如何作,用哪个属性,请各位大侠指教,谢了!

解决方案 »

  1.   

    procedure TForm1.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
    begin
      Node.ImageIndex := 1;
      Node.SelectedIndex := 1; //
      TTreeView(Sender).Invalidate; // 刷新
    end;procedure TForm1.TreeView1Collapsed(Sender: TObject; Node: TTreeNode);
    begin
      Node.ImageIndex := 0;
      Node.SelectedIndex := 0; //
      TTreeView(Sender).Invalidate; // 刷新
    end;
      

  2.   

    zswang(伴水清清)(专家门诊清洁工) ,我试了你的方法,可行,但还有一问题.
    如何得到当前被展开或合上的节点的index值呢,通常都是点击图标左边的"+"
    号或"-"号来展开或合上节点的,我想在点击时只改变当前被中"+"号或"-"号的
    对应节点的图标.如何得到此节点的index值啊?
      

  3.   

    程序这样写的,但结果不对:
    procedure TForm3.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
    var
      i :Integer;
    begin
         i:=TreeView1.Selected.Index;
         if (i>=0) and (i<TreeView1.Items.Count) then
         begin
           TreeView1.Items[i].ImageIndex:=2;
           TreeView1.Items[i].SelectedIndex:=2;
           TTreeView(Sender).Invalidate;//刷新
         end;
    end;
      

  4.   

    我调试了一下,原因是当点击TreeView某节点左边的"+"或"-"号时,
    TreeView1.Selected.Index的返回值为"-1",那么这里应该选择哪个属性
    来得到被展开节点的值呢?请再指教一二
      

  5.   

    TreeView1Expanded(Sender: TObject; Node: TTreeNode);Node参数就是点+的节点,点+并不会改变Selected//try
         TreeView1.Selected := Node;
         i:=TreeView1.Selected.Index;
      

  6.   

    zswang(伴水清清)(专家门诊清洁工) ,这样还是不行啊,
    即然Node参数就是点+的节点,那么我下面用
    TreeView1.Items[i].ImageIndex:=2;
    来改变Node节点的图标就不对了,因为Node=1时,Item可能等于
    3,4或更大的值
      

  7.   

    那你为什么不直接操作Node???Index是相对序号
    AbsoluteIndex才是绝对序号//try
    i:=TreeView1.Selected.AbsoluteIndex;
      

  8.   

    zswang(伴水清清)(专家门诊清洁工) ,这样还是不行,
    i:=TreeView1.Selected.AbsoluteIndex;这句话直接报错.
    是不是要用stateimages属性呢?
      

  9.   

    -_-!!!!!!!!!!!if not Assigned(TreeView1.Selected) then Exit;
    i := TreeView1.Selected.AbsoluteIndex;//我第一个给你的回复有什么问题??????????
    //你为何非要用TreeView1.Items[i]访问???????procedure TForm1.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
    begin
      Node.ImageIndex := 1;
      Node.SelectedIndex := 1; //
      TTreeView(Sender).Invalidate; // 刷新
    end;procedure TForm1.TreeView1Collapsed(Sender: TObject; Node: TTreeNode);
    begin
      Node.ImageIndex := 0;
      Node.SelectedIndex := 0; //
      TTreeView(Sender).Invalidate; // 刷新
    end;