我是在建立TreeView各个Node的时候给Node.ImageIndex赋的值,但是TreeView显示之后通过鼠标的点击,图标就会变来变去的不明白为什么代码大概如下,请各位高手指点,谢谢!while Not TempADOQ.Eof do
begin
  if Prelvl=TempADOQ.FieldByName('LEVEL').AsInteger then
  begin  // Sibling
    Node:=TempTree.items.Add(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
  end else
  begin
    if Prelvl<TempADOQ.FieldByName('LEVEL').AsInteger then
    begin  // Child
      Node:=TempTree.items.AddChild(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
    end else
    begin // Parent
      while Node.Level <> TempADOQ.FieldByName('LEVEL').AsInteger do
        Node:=Node.Parent;
      Node:=TempTree.items.Add(Node,TempADOQ.Fieldbyname('sitemcd').AsString);
    end;
  end;
  Prelvl:=TempADOQ.FieldByName('LEVEL').AsInteger;
  Node.StateIndex:=TempADOQ.Fieldbyname('rownum').AsInteger;
  case TempADOQ.FieldByName('mitemdiv').AsInteger of
    1: Node.ImageIndex:=0;
    2: Node.ImageIndex:=1;
    4: Node.ImageIndex:=2;
  end;
  TempADOQ.Next;
end;

解决方案 »

  1.   

    俺都是直接在treeview中指定一个imagelist,只是使用打开和关闭节点时使用2个图标up
      

  2.   

    case TempADOQ.FieldByName('mitemdiv').AsInteger of
        1: Node.ImageIndex:=0;
        2: Node.ImageIndex:=1;
        4: Node.ImageIndex:=2;
      end;为何不用 
    case treeview.curNode.level  of
    0:
    1:
    2:
    3:
    end
      

  3.   

    case TempADOQ.FieldByName('mitemdiv').AsInteger of
        1: 
         begin
           Node.ImageIndex:=0;
           Node.SelectedIndex:=0;
         end;
        end;
    设置SelectedIndex同你的imageIndex一致,或您想要的图标
      

  4.   

    htyx(轻风夜私语)  正解。鼠标选中后,显示的是 “选中时的图片”,于正常状态不一样。好像还有一个什么 Index,记不得了,查查帮助便是。