for n := 0 to high(arraycaption) do
begin
ttree :=treeview2.Items.add(nil,arraycaption[n][0]);
if zarrayadmin[n][1] <> '2' then ttree.ImageIndex := 0
else ttree.ImageIndex := 0;
    for m := 1 to high(arraycaption[n]) do
    begin
    ttree1 :=treeview2.Items.AddChild(ttree,arraycaption[n][m]);
    if zarrayadmin[n][m+1] <> '2' then ttree1.ImageIndex := 0
    else ttree1.ImageIndex := 1;
    end;
end;
这是生成节点的代码
但是我没有设置其他属性
为什么选中的节点的图片就会变化,无论是鼠标还是键盘都这样
但是一离开就正常怎么设置让他不会变

解决方案 »

  1.   

    跟踪一下节点的selectedindex的值是不是和ImageIndex一样,不一样的话肯定是变的
      

  2.   

    同意楼上
    for n := 0 to high(arraycaption) do
    begin
      ttree :=treeview2.Items.add(nil,arraycaption[n][0]);
      if zarrayadmin[n][1] <> '2' then ttree.ImageIndex := 0
      else ttree.ImageIndex := 0;
      for m := 1 to high(arraycaption[n]) do
      begin
        ttree1 :=treeview2.Items.AddChild(ttree,arraycaption[n][m]);
        if zarrayadmin[n][m+1] <> '2' then 
          ttree1.ImageIndex := 0;
        else ttree1.ImageIndex := 1;
        ttree1.SelectedIndex := ttree1.ImageIndex;
      end;
    end;
      

  3.   

    如果可以不需要图片的话,删除树的属性的ImageIndex的值就可以了
    如果想用图片,可以参照楼上的做法