lazcontrols: TTreeFilterEdit: free noe data on tree destroy

git-svn-id: trunk@35091 -
This commit is contained in:
mattias 2012-02-02 16:46:57 +00:00
parent aad4d125c5
commit c0dada7561

View File

@ -60,6 +60,7 @@ type
procedure SetFilteredTreeview(const AValue: TCustomTreeview);
procedure SetShowDirHierarchy(const AValue: Boolean);
function FilterTree(Node: TTreeNode): Boolean;
procedure OnBeforeTreeDestroy(Sender: TObject);
protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure MoveNext; override;
@ -121,9 +122,9 @@ end;
destructor TTreeFilterBranch.Destroy;
begin
fFilenameMap.Free;
fSortedData.Free;
fOriginalData.Free;
FreeAndNil(fFilenameMap);
FreeAndNil(fSortedData);
FreeAndNil(fOriginalData);
FreeTVNodeData(fRootNode);
inherited Destroy;
end;
@ -330,8 +331,8 @@ end;
destructor TTreeFilterEdit.Destroy;
begin
fBranches.Free;
fSelectionList.Free;
FreeAndNil(fBranches);
FreeAndNil(fSelectionList);
inherited Destroy;
end;
@ -340,14 +341,23 @@ begin
Result := TreeFilterGlyph;
end;
procedure TTreeFilterEdit.OnBeforeTreeDestroy(Sender: TObject);
begin
FreeAndNil(fBranches);
end;
procedure TTreeFilterEdit.SetFilteredTreeview(const AValue: TCustomTreeview);
begin
if fFilteredTreeview = AValue then Exit;
if fFilteredTreeview <> nil then
if fFilteredTreeview <> nil then begin
fFilteredTreeview.RemoveFreeNotification(Self);
fFilteredTreeview.RemoveHandlerOnBeforeDestruction(@OnBeforeTreeDestroy);
end;
fFilteredTreeview := AValue;
if fFilteredTreeview <> nil then
if fFilteredTreeview <> nil then begin
fFilteredTreeview.FreeNotification(Self);
fFilteredTreeview.AddHandlerOnBeforeDestruction(@OnBeforeTreeDestroy);
end;
end;
procedure TTreeFilterEdit.SetShowDirHierarchy(const AValue: Boolean);
@ -375,8 +385,6 @@ begin
end;
procedure TTreeFilterEdit.Notification(AComponent: TComponent; Operation: TOperation);
var
i: Integer;
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) then
@ -384,9 +392,7 @@ begin
if FilteredTreeview=AComponent then
begin
fFilteredTreeview:=nil;
if Assigned(fBranches) then
for i := 0 to fBranches.Count-1 do
fBranches[i].CleanUp;
FreeAndNil(fBranches);
end;
end;
end;