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

View File

@ -699,6 +699,15 @@ begin
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);
begin
ExpandItem(False, Recurse);
@ -772,7 +781,7 @@ begin
Update;
end;
function TTreeNode.GetCut: Boolean;
function TTreeNode.GetCut: boolean;
begin
Result := GetState(nsCut);
end;
@ -2497,6 +2506,16 @@ begin
if FUpdateCount = 0 then SetUpdateState(False);
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;
begin
Result := TTreeNodesEnumerator.Create(Self);