LCL: TTreeView: accelerated TTreeNode.Index

git-svn-id: trunk@18569 -
This commit is contained in:
mattias 2009-02-04 20:00:28 +00:00
parent 542aea22d8
commit f59b54561e

View File

@ -1004,6 +1004,7 @@ begin
// many algorithms uses the last sibling, so we check that first for speed // many algorithms uses the last sibling, so we check that first for speed
if (Parent<>nil) and (Parent[Parent.Count-1]=Self) then begin if (Parent<>nil) and (Parent[Parent.Count-1]=Self) then begin
Result:=Parent.Count-1; Result:=Parent.Count-1;
FIndex:=Result;
exit; exit;
end; end;
// count previous siblings // count previous siblings
@ -1011,8 +1012,13 @@ begin
ANode := Self; ANode := Self;
while ANode <> nil do begin while ANode <> nil do begin
Inc(Result); Inc(Result);
if ANode.FIndex>=0 then begin
inc(Result,ANode.FIndex);
break;
end;
ANode := ANode.GetPrevSibling; ANode := ANode.GetPrevSibling;
end; end;
FIndex:=Result;
end; end;
function TTreeNode.GetItems(AnIndex: Integer): TTreeNode; function TTreeNode.GetItems(AnIndex: Integer): TTreeNode;