lcl: TTreeNodes.FreeAllNodeData

git-svn-id: trunk@41740 -
This commit is contained in:
mattias 2013-06-17 12:09:50 +00:00
parent 3e71fee9df
commit b293ec66bf
2 changed files with 66 additions and 45 deletions

View File

@ -2657,14 +2657,12 @@ type
function GetOwner: TPersistent; override; function GetOwner: TPersistent; override;
public public
constructor Create(AnOwner: TTreeNodes); constructor Create(AnOwner: TTreeNodes);
destructor Destroy; override;
function AlphaSort: Boolean; function AlphaSort: Boolean;
procedure Assign(Source: TPersistent); override; function Bottom: integer;
procedure Collapse(Recurse: Boolean); function BottomExpanded: integer;
function CustomSort(SortProc: TTreeNodeCompare): Boolean; function CustomSort(SortProc: TTreeNodeCompare): Boolean;
function DefaultTreeViewSort(Node1, Node2: TTreeNode): Integer; function DefaultTreeViewSort(Node1, Node2: TTreeNode): Integer;
procedure Delete;
procedure DeleteChildren;
destructor Destroy; override;
function DisplayExpandSignLeft: integer; function DisplayExpandSignLeft: integer;
function DisplayExpandSignRect: TRect; function DisplayExpandSignRect: TRect;
function DisplayExpandSignRight: integer; function DisplayExpandSignRight: integer;
@ -2674,27 +2672,23 @@ type
function DisplayTextLeft: integer; function DisplayTextLeft: integer;
function DisplayTextRight: integer; function DisplayTextRight: integer;
function EditText: Boolean; function EditText: Boolean;
procedure EndEdit(Cancel: Boolean); function FindNode(const NodeText: string): TTreeNode;
procedure Expand(Recurse: Boolean);
procedure ExpandParents;
function Bottom: integer;
function BottomExpanded: integer;
function GetParentNodeOfAbsoluteLevel(TheAbsoluteLevel: integer): TTreeNode;
function GetFirstChild: TTreeNode; function GetFirstChild: TTreeNode;
function GetFirstVisibleChild: TTreeNode; function GetFirstVisibleChild: TTreeNode;
function GetHandle: THandle; function GetHandle: THandle;
function GetLastSibling: TTreeNode;
function GetLastChild: TTreeNode; function GetLastChild: TTreeNode;
function GetLastVisibleChild: TTreeNode; function GetLastSibling: TTreeNode;
function GetLastSubChild: TTreeNode; function GetLastSubChild: TTreeNode;
function GetLastVisibleChild: 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;
function GetNextSibling: TTreeNode; function GetNextSibling: TTreeNode;
function GetNextSkipChildren: TTreeNode;
function GetNextVisible: TTreeNode; function GetNextVisible: TTreeNode;
function GetNextVisibleSibling: TTreeNode; function GetNextVisibleSibling: TTreeNode;
function GetParentNodeOfAbsoluteLevel(TheAbsoluteLevel: integer): TTreeNode;
function GetPrev: TTreeNode; function GetPrev: TTreeNode;
function GetPrevChild(AValue: TTreeNode): TTreeNode; function GetPrevChild(AValue: TTreeNode): TTreeNode;
function GetPrevExpanded: TTreeNode; function GetPrevExpanded: TTreeNode;
@ -2702,47 +2696,54 @@ type
function GetPrevSibling: TTreeNode; function GetPrevSibling: TTreeNode;
function GetPrevVisible: TTreeNode; function GetPrevVisible: TTreeNode;
function GetPrevVisibleSibling: TTreeNode; function GetPrevVisibleSibling: TTreeNode;
function GetTextPath: string;
function HasAsParent(AValue: TTreeNode): Boolean; function HasAsParent(AValue: TTreeNode): Boolean;
function IndexOf(AValue: TTreeNode): Integer; function IndexOf(AValue: TTreeNode): Integer;
function IndexOfText(const NodeText: string): Integer; function IndexOfText(const NodeText: string): Integer;
function FindNode(const NodeText: string): TTreeNode; procedure Assign(Source: TPersistent); override;
function GetTextPath: string; procedure Collapse(Recurse: Boolean);
procedure ConsistencyCheck;
procedure Delete;
procedure DeleteChildren;
procedure EndEdit(Cancel: Boolean);
procedure Expand(Recurse: Boolean);
procedure ExpandParents;
procedure FreeAllNodeData;
procedure MakeVisible; procedure MakeVisible;
procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode); virtual; procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode); virtual;
procedure MultiSelectGroup; procedure MultiSelectGroup;
procedure Update; procedure Update;
procedure ConsistencyCheck;
procedure WriteDebugReport(const Prefix: string; Recurse: boolean); procedure WriteDebugReport(const Prefix: string; Recurse: boolean);
property AbsoluteIndex: Integer read GetAbsoluteIndex; property AbsoluteIndex: Integer read GetAbsoluteIndex;
property Count: Integer read GetCount; property Count: Integer read GetCount;
property Cut: Boolean read GetCut write SetCut; property Cut: Boolean read GetCut write SetCut;
property Data: Pointer read FData write SetData; property Data: Pointer read FData write SetData;
property Deleting: Boolean read GetDeleting; property Deleting: Boolean read GetDeleting;
property Focused: Boolean read GetFocused write SetFocused;
property DropTarget: Boolean read GetDropTarget write SetDropTarget; property DropTarget: Boolean read GetDropTarget write SetDropTarget;
property Expanded: Boolean read GetExpanded write SetExpanded; property Expanded: Boolean read GetExpanded write SetExpanded;
property Focused: Boolean read GetFocused write SetFocused;
property Handle: THandle read GetHandle; property Handle: THandle read GetHandle;
property HasChildren: Boolean read GetHasChildren write SetHasChildren; property HasChildren: Boolean read GetHasChildren write SetHasChildren;
property Height: integer read GetHeight write SetHeight; property Height: integer read GetHeight write SetHeight;
property NodeEffect: TGraphicsDrawEffect read FNodeEffect write SetImageEffect;
property ImageIndex: TImageIndex read FImageIndex write SetImageIndex default -1; property ImageIndex: TImageIndex read FImageIndex write SetImageIndex default -1;
property Index: Integer read GetIndex write SetIndex; property Index: Integer read GetIndex write SetIndex;
property IsVisible: Boolean read IsNodeVisible;
property IsFullHeightVisible: Boolean read IsNodeHeightFullVisible; property IsFullHeightVisible: Boolean read IsNodeHeightFullVisible;
property IsVisible: Boolean read IsNodeVisible;
property Items[ItemIndex: Integer]: TTreeNode read GetItems write SetItems; default; property Items[ItemIndex: Integer]: TTreeNode read GetItems write SetItems; default;
property Level: Integer read GetLevel; property Level: Integer read GetLevel;
property MultiSelected: Boolean read GetMultiSelected write SetMultiSelected; property MultiSelected: Boolean read GetMultiSelected write SetMultiSelected;
property NodeEffect: TGraphicsDrawEffect read FNodeEffect write SetImageEffect;
property OverlayIndex: Integer read FOverlayIndex write SetOverlayIndex default -1; property OverlayIndex: Integer read FOverlayIndex write SetOverlayIndex default -1;
property Owner: TTreeNodes read FOwner; property Owner: TTreeNodes read FOwner;
property Parent: TTreeNode read FParent; property Parent: TTreeNode read FParent;
property Selected: Boolean read GetSelected write SetSelected; property Selected: Boolean read GetSelected write SetSelected;
property SelectedIndex: Integer read FSelectedIndex write SetSelectedIndex default -1; property SelectedIndex: Integer read FSelectedIndex write SetSelectedIndex default -1;
property SubTreeCount: integer read FSubTreeCount;
property StateIndex: Integer read FStateIndex write SetStateIndex default -1; property StateIndex: Integer read FStateIndex write SetStateIndex default -1;
property SubTreeCount: integer read FSubTreeCount;
property Text: string read FText write SetText; property Text: string read FText write SetText;
property Top: integer read GetTop;
property TreeNodes: TTreeNodes read GetTreeNodes; property TreeNodes: TTreeNodes read GetTreeNodes;
property TreeView: TCustomTreeView read GetTreeView; property TreeView: TCustomTreeView read GetTreeView;
property Top: integer read GetTop;
property Visible: Boolean read FVisible write SetVisible default True; property Visible: Boolean read FVisible write SetVisible default True;
end; end;
@ -2818,40 +2819,41 @@ type
function AddChildObjectFirst(ParentNode: TTreeNode; const S: string; function AddChildObjectFirst(ParentNode: TTreeNode; const S: string;
Data: Pointer): TTreeNode; Data: Pointer): TTreeNode;
function AddFirst(SiblingNode: TTreeNode; const S: string): TTreeNode; function AddFirst(SiblingNode: TTreeNode; const S: string): TTreeNode;
function AddNode(Node: TTreeNode; Relative: TTreeNode; const S: string;
Ptr: Pointer; Method: TNodeAttachMode): TTreeNode;
function AddObject(SiblingNode: TTreeNode; const S: string; function AddObject(SiblingNode: TTreeNode; const S: string;
Data: Pointer): TTreeNode; Data: Pointer): TTreeNode;
function AddObjectFirst(SiblingNode: TTreeNode; const S: string; function AddObjectFirst(SiblingNode: TTreeNode; const S: string;
Data: Pointer): TTreeNode; Data: Pointer): TTreeNode;
function AddNode(Node: TTreeNode; Relative: TTreeNode; const S: string; function FindNodeWithData(const NodeData: Pointer): TTreeNode;
Ptr: Pointer; Method: TNodeAttachMode): TTreeNode; function FindNodeWithText(const NodeText: string): TTreeNode;
function FindTopLvlNode(const NodeText: string): TTreeNode;
function GetEnumerator: TTreeNodesEnumerator;
function GetFirstNode: TTreeNode;
function GetFirstVisibleNode: TTreeNode;
function GetLastExpandedSubNode: TTreeNode; // absolute last node
function GetLastNode: TTreeNode; // last top level node
function GetLastSubNode: TTreeNode; // absolute last node
function GetLastVisibleNode: TTreeNode;
function GetSelections(const AIndex: Integer): TTreeNode;
function Insert(NextNode: TTreeNode; const S: string): TTreeNode;
function InsertBehind(PrevNode: TTreeNode; const S: string): TTreeNode;
function InsertObject(NextNode: TTreeNode; const S: string;
Data: Pointer): TTreeNode;
function InsertObjectBehind(PrevNode: TTreeNode; const S: string;
Data: Pointer): TTreeNode;
function IsMultiSelection: boolean;
procedure Assign(Source: TPersistent); override; procedure Assign(Source: TPersistent); override;
procedure BeginUpdate; procedure BeginUpdate;
procedure Clear; procedure Clear;
procedure ClearMultiSelection(ClearSelected: boolean = false); procedure ClearMultiSelection(ClearSelected: boolean = false);
procedure SelectOnlyThis(Node: TTreeNode); procedure ConsistencyCheck;
function IsMultiSelection: boolean;
procedure Delete(Node: TTreeNode); procedure Delete(Node: TTreeNode);
procedure EndUpdate; procedure EndUpdate;
function GetEnumerator: TTreeNodesEnumerator; procedure FreeAllNodeData;
function GetFirstNode: TTreeNode;
function GetFirstVisibleNode: TTreeNode;
function GetLastNode: TTreeNode; // last top level node
function GetLastVisibleNode: TTreeNode;
function GetLastSubNode: TTreeNode; // absolute last node
function GetLastExpandedSubNode: TTreeNode; // absolute last node
function GetSelections(const AIndex: Integer): TTreeNode;
function FindTopLvlNode(const NodeText: string): TTreeNode;
function FindNodeWithText(const NodeText: string): TTreeNode;
function FindNodeWithData(const NodeData: Pointer): TTreeNode;
function Insert(NextNode: TTreeNode; const S: string): TTreeNode;
function InsertObject(NextNode: TTreeNode; const S: string;
Data: Pointer): TTreeNode;
function InsertBehind(PrevNode: TTreeNode; const S: string): TTreeNode;
function InsertObjectBehind(PrevNode: TTreeNode; const S: string;
Data: Pointer): TTreeNode;
procedure SelectionsChanged(ANode: TTreeNode; const AIsSelected: Boolean); procedure SelectionsChanged(ANode: TTreeNode; const AIsSelected: Boolean);
procedure SelectOnlyThis(Node: TTreeNode);
procedure SortTopLevelNodes(SortProc: TTreeNodeCompare); procedure SortTopLevelNodes(SortProc: TTreeNodeCompare);
procedure ConsistencyCheck;
procedure WriteDebugReport(const Prefix: string; AllNodes: boolean); procedure WriteDebugReport(const Prefix: string; AllNodes: boolean);
property Count: Integer read GetCount; property Count: Integer read GetCount;
property Item[Index: Integer]: TTreeNode read GetNodeFromIndex; default; property Item[Index: Integer]: TTreeNode read GetNodeFromIndex; default;

View File

@ -699,6 +699,15 @@ begin
end; end;
end; end;
procedure TTreeNode.FreeAllNodeData;
var
i: Integer;
begin
FreeAndNil(FData);
for i:=0 to Count-1 do
Items[i].FreeAllNodeData;
end;
procedure TTreeNode.Collapse(Recurse: Boolean); procedure TTreeNode.Collapse(Recurse: Boolean);
begin begin
ExpandItem(False, Recurse); ExpandItem(False, Recurse);
@ -772,7 +781,7 @@ begin
Update; Update;
end; end;
function TTreeNode.GetCut: Boolean; function TTreeNode.GetCut: boolean;
begin begin
Result := GetState(nsCut); Result := GetState(nsCut);
end; end;
@ -2497,6 +2506,16 @@ begin
if FUpdateCount = 0 then SetUpdateState(False); if FUpdateCount = 0 then SetUpdateState(False);
end; end;
procedure TTreeNodes.FreeAllNodeData;
var
i: Integer;
begin
BeginUpdate;
for i:=0 to TopLvlCount-1 do
TopLvlItems[i].FreeAllNodeData;
EndUpdate;
end;
function TTreeNodes.GetEnumerator: TTreeNodesEnumerator; function TTreeNodes.GetEnumerator: TTreeNodesEnumerator;
begin begin
Result := TTreeNodesEnumerator.Create(Self); Result := TTreeNodesEnumerator.Create(Self);