一个递归函数
function FindNode(ANode: TTreeNode; const condition: Variant; ARecurse: Boolean): TTreeNode;
var
Node: TTreeNode;
begin
Result := nil;
Node := ANode;
while Node <> nil do
begin
//遍历终止条件,例如:
if condition = Node.Text then
begin
Result := Node;
Break;
end
else
if ARecurse then
begin
if Node.HasChildren then
Result := FindNode(Node.getFirstChild, condition, ARecurse);
if Result = nil then
Node := Node.getNextSibling
else
Node := nil;
end;
end;
end;
procedure GetInfo(TreeNode:TTreeNode);
var
i:integer;
begin
for i:=0 to TreeNode.Count-1 do
begin
if TreeNode[i].HasChildren then
begin
Showmessage(TreeNode.Item[i].Text);
GetInfo(TreeNode[i]);
end
else
Showmessage(TreeNode.Item[i].Text);
end;
end;
方法1:
var
i;integer;
xx:TListItem;
begin
for i:=1 to Listview1.Items.count-1
begin
xx:=ListView.Items.Item[i];
//process xx here
end;
end;
方法2:
var
lnNode: TTreeNode;
begin
lnNode := TreeView1.Items.GetFirstNode;
while not (lnNode = nil) do begin
{
//process xx here
}
lnNode := lnNode.GetNextSibling;
end;
end;