查找树的节点
{*************************************************************************
查找节点的下一个可以编辑的节点
*************************************************************************}
Function FindNextNode(Node : PVirtualNode;Var VST : TVirtualStringTree) : PVirtualNode;
{*********************************************
找到某一节点下第一个可以编辑的节点
**********************************************}
Procedure FindFirstNode(Node:PVirtualNode;VST:TVirtualStringTree;Var Result : PVirtualNode);
Var
TNode : PVirtualNode;
Data : PNodeData;
begin
If Node = Nil then
Exit;
Data := VST.GetNodeData(Node);
If (Trim(Data.EditS) = 'Y') and (Node.ChildCount <= 0) then
begin
Result := Node; //>在这里我找到了第一我要的节点为为什么我的函数不 //返回?
Exit;
end;
If Node.ChildCount > 0 then
begin
TNode := Node.NextSibling;
While TNode <> Nil Do
begin
FindFirstNode(TNode,VST,Result);
TNode := TNode.NextSibling;
end;
end else
begin
TNode := Node.NextSibling;
FindFirstNode(TNode,VST,Result);
end;
end;
begin
Result := Nil;
If Node = Node.Parent.LastChild then
FindNextNode(Node.Parent,VST)
else
FindFirstNode(Node.NextSibling,VST,Result);
If Result <> Nil then
Exit;
end;