这不可能,Child和Sibling是两个概念。除非你得到的都是nil,要不就贴出代码看看。

解决方案 »

  1.   

    请各位帮忙:        TestHit:=tvwMember.GetHitTestInfoAt(x,y);
            if (htOnItem in TestHit) or (htOnLabel in TestHit) then
                Begin
                SelNode:=tvwMember.Selected;
                NodeClickData:=tvwMember.Selected.Data;
                NodeIsSelected:=tvwMember.Selected.Selected;
                i:=tvwMember.Selected.Index;
                if NodeClickData.Mark='d' then
                    Begin
                    FirstChild:=selNode.GetNextChild(tvwMember.Selected);
                    FirstChildIndex:=FirstChild.Index;
                    //LastChild:=tvwMember.Selected.GetLastChild;
                    //LastChildIndex:=LastChild.Index;
                    LastChild:=SelNode.getNextSibling;
                    LastChildIndex:=FirstChild.Index;
                    For i:=FirstChildIndex to LastChildIndex do
                        Begin
                        tvwMember.Items.Item[i].Selected:=NodeIsSelected;
                        end;
                    end;我得到的FirstChildIndex and LastChildIndex都是3
                end;
            end;
      

  2.   

    其实Delphi有相关的Demo代码!!!!!!!
      

  3.   

    Index并不能唯一标识一个Node,这一点请看看Help。
    唯一确定一个Node的是AbsoluteIndex。不信,你可以比较两个Node的内存是否是同一地址。
      

  4.   

    To chechy(我爱洁洁) :
    我用Node的AbsoluteIndex得到的值都是4,还是一样
      

  5.   

    我就是想让Treeview的某一个Node 被点击时,他的每个子Node的Selected属性值变成与它的selected属性值相同,请问除了循环检查parent外还有什么方法?
      

  6.   

    你的代码是不是有逻辑错误啊?LastChildIndex:=FirstChild.Index;是不是打错了,应该是下面这行吧?LastChildIndex:=LastChild.Index;