如题!下面是代码。想实现遍历全树,然后删除某些没内容的节点。但报Stack OverFlow错误
function TfrmProjCompletedScore.AllOverTreeList(
node: TcxTreeListNode): TcxTreeListNode;
var
BNode: TcxTreeListNode;
begin
while node<>nil do
begin
if node.HasChildren then
begin
node := node.getFirstChild;
AllOverTreeList(node);
if node.Parent <> nil then
node := node.Parent;
end
else
begin
if ((Node.Values[tlWBSProjectName.ItemIndex] = NULL)
or (Node.Values[tlWBSProjectName.ItemIndex] = '')) then
begin
if node.Parent <> nil then
BNode := node.Parent;
node.Delete;
node := BNode;
AllOverTreeList(node);
end;
end;
if node.getNextSibling <> nil then
node := node.getNextSibling
else
Exit;
end;
end;
procedure TfrmProjCompletedScore.cxButton1Click(Sender: TObject);
var
ANode : TcxTreeListNode;
begin
inherited;
with tlWBS.DataController.DataSource.DataSet do
try
tlWBS.BeginUpdate;
DisableControls;
Anode := tlWBS.FocusedNode;
AllOverTreeList(ANode);
finally
tlWBS.EndUpdate;
EnableControls;
end;
end;