请问如何遍历vitualStringTree,设置所有的节点为非选中状态。
我的意思是我想定义一个函数,将遍历vitualStringTree的所有父节点,子节点,如果当前节点被选中,
则将当前节点设为非选中状态:
var
 node:PVirtualNode;
beginif node.CheckState in [ csCheckedNormal, csMixedPressed ]then   //就是这个意思,当然是要遍历所有的都设为 node.checkState:=csuncheckedNormal;end;

解决方案 »

  1.   

    也就是清空vstree所有节点的选中状态
      

  2.   


    procedure TForm1.N1Click(Sender: TObject);
    var
    Node:PVirtualNode;
    begin
      with VST1 do begin
        Node := GetFirst(False);
        while Assigned(node) do begin
        if Node.Parent<>RootNode then begin   //这个比较是否是根节点  楼主不需要的话可以去掉
          if node.CheckState in [ csCheckedNormal, csMixedPressed ] then
          node.checkState:=csuncheckedNormal
          else
          node.checkState:=csCheckedNormal;
        end;
          Node:=GetNext(Node,False)
        end;
        Refresh;//不刷新貌似会有一点点小问题
      end;
    end;我以前自己做练习的一个Demo,楼主试试可不可以。
      

  3.   

    谢谢你了,辛苦了,不过一句就可以搞定了不用那么多,后来想到了:vstree.cleanchecked