可以,在TreeView的OnExpand / OnCollapsed中书写下面的代码就可以了:
node.ImageIndex:=YourImageIndex;
node.Selected:=true;

解决方案 »

  1.   

    不过有个更好的方法,只要在属性编辑其中进行设置就可以了,双击TreeView,可以设置他们的ImageIndex。
      

  2.   

    你们没明白我的意思,你们试试点‘+’和点item一样吗?点‘+’时,item是没有被选中的。
      

  3.   

    请使用THitTests,参考代码如下:
    procedure TTreeView.WMRButtonDown(var Message: TWMRButtonDown);
    var
       ANode : TTreeNode;
       HitTest : THitTests;
    begin
       ANode:=GetNodeAt(Message.XPos,Message.YPos);
       HitTest:=GetHitTestInfoAt(Message.XPos,Message.YPos);   if(htOnButton in HitTest) then
         Selected:=ANode;
    end;THitTests专用于测试用户点击了TreeView的什么地方
      

  4.   

    to Davidyang:
    KingRon说的完全正确,你自己试一试吧!
    在点+时 OnExpanding和OnExpanded被触发,在处理代码中写上:
    node.ImageIndex:=YourImageIndex;
    node.Selected:=true;//或TreeView.selected:=Node;
    这时你选择的带+的Item被选中,图标也改变了,树展开。
    你直接点+号的Item时不触发该事件,你可以让不展开的Item设为另一图标,只要在创建时加上:
    node.ImageIndex:=YourImageIndex1;当然你的YourImageIndex1=YourImageIndex时,只要选中,则为同一图标。
      

  5.   

    to lixif:
    这么简单的问题,用这么复杂吗?
      

  6.   

    //你们没明白我的意思,你们试试点‘+’和点item一样吗?点‘+’时,item是没有被选中的。哎,我的第一个回答你没有去测试吗?气愤。。
      

  7.   

    点‘+’和点item 不一样所以才应使用THitTests