LCL: TTreeView: added TTreeNode.GetNextSkipChildren

git-svn-id: trunk@30785 -
This commit is contained in:
mattias 2011-05-17 12:48:00 +00:00
parent f99cfe3556
commit 25cc1acf65
2 changed files with 21 additions and 13 deletions

View File

@ -2171,6 +2171,7 @@ type
function GetLastChild: TTreeNode; function GetLastChild: TTreeNode;
function GetLastSubChild: TTreeNode; function GetLastSubChild: TTreeNode;
function GetNext: TTreeNode; function GetNext: TTreeNode;
function GetNextSkipChildren: TTreeNode;
function GetNextChild(AValue: TTreeNode): TTreeNode; function GetNextChild(AValue: TTreeNode): TTreeNode;
function GetNextExpanded: TTreeNode; function GetNextExpanded: TTreeNode;
function GetNextMultiSelected: TTreeNode; function GetNextMultiSelected: TTreeNode;
@ -2838,8 +2839,8 @@ type
destructor Destroy; override; destructor Destroy; override;
procedure Clear; procedure Clear;
procedure CreateChildNodes(FirstTreeNode: TTreeNode); procedure CreateChildNodes(FirstTreeNode: TTreeNode);
procedure Apply(FirstTreeNode: TTreeNode); procedure Apply(FirstTreeNode: TTreeNode; CollapseToo: boolean = true);
procedure Apply(TreeView: TCustomTreeView); procedure Apply(TreeView: TCustomTreeView; CollapseToo: boolean = true);
end; end;

View File

@ -222,7 +222,8 @@ begin
end; end;
end; end;
procedure TTreeNodeExpandedState.Apply(FirstTreeNode: TTreeNode); procedure TTreeNodeExpandedState.Apply(FirstTreeNode: TTreeNode;
CollapseToo: boolean);
var var
ChildNode: TTreeNode; ChildNode: TTreeNode;
ANode: TAvgLvlTreeNode; ANode: TAvgLvlTreeNode;
@ -233,16 +234,20 @@ begin
while ChildNode<>nil do begin while ChildNode<>nil do begin
ChildNodeText:=ChildNode.Text; ChildNodeText:=ChildNode.Text;
ANode:=Children.FindKey(PChar(ChildNodeText),@CompareTextWithExpandedNode); ANode:=Children.FindKey(PChar(ChildNodeText),@CompareTextWithExpandedNode);
ChildNode.Expanded:=ANode<>nil; if ANode<>nil then
ChildNode.Expanded:=true
else if CollapseToo then
ChildNode.Expanded:=false;
if ANode<>nil then if ANode<>nil then
TTreeNodeExpandedState(ANode.Data).Apply(ChildNode.GetFirstChild); TTreeNodeExpandedState(ANode.Data).Apply(ChildNode.GetFirstChild);
ChildNode:=ChildNode.GetNextSibling; ChildNode:=ChildNode.GetNextSibling;
end; end;
end; end;
procedure TTreeNodeExpandedState.Apply(TreeView: TCustomTreeView); procedure TTreeNodeExpandedState.Apply(TreeView: TCustomTreeView;
CollapseToo: boolean);
begin begin
Apply(TreeView.Items.GetFirstNode); Apply(TreeView.Items.GetFirstNode,CollapseToo);
end; end;
{ TTreeNode } { TTreeNode }
@ -921,13 +926,15 @@ end;
function TTreeNode.GetNext: TTreeNode; function TTreeNode.GetNext: TTreeNode;
begin begin
Result:=GetFirstChild; Result:=GetFirstChild;
if Result=nil then begin if Result=nil then Result:=GetNextSkipChildren;
// no children, search next end;
Result:=Self;
while (Result<>nil) and (Result.FNextBrother=nil) do function TTreeNode.GetNextSkipChildren: TTreeNode;
Result:=Result.Parent; begin
if Result<>nil then Result:=Result.FNextBrother; Result:=Self;
end; while (Result<>nil) and (Result.FNextBrother=nil) do
Result:=Result.Parent;
if Result<>nil then Result:=Result.FNextBrother;
end; end;
function TTreeNode.GetPrev: TTreeNode; function TTreeNode.GetPrev: TTreeNode;