[lazarus] Order of destruction in TCustomListBox
Mattias Gaertner
nc-gaertnma at netcologne.de
Fri Dec 12 11:42:19 EST 2003
On Fri, 12 Dec 2003 17:02:56 +0100 Vincent Snijders <vslist at zonnet.nl>
wrote:
> Hi,
>
> The destructor of TCustomListBox is:
> destructor TCustomListBox.Destroy;
> begin
> FreeAndNil(FCanvas);
> inherited Destroy;
> FreeAndNil(FItems);
> end;
>
> As I am implementing the TCheckListBox items collection for win32, I
> would like to access the listbox handle, while in the destructor of the
> items collection. Unfortunately the window (+ items + item data stored
> in it) are lost before the destructor for the items collection is
> called.
>
> Therefore I want to ask, if it is possible to change to destructor to:
> destructor TCustomListBox.Destroy;
> begin
> FreeAndNil(FCanvas);
> FreeAndNil(FItems);
> inherited Destroy;
> end;
>
> If this is not possible, I will probably find another way to close the
> checklistbox without memory leaks, but changing this is easier for me.
What about:
destructor TCustomListBox.Destroy;
begin
Destroying;
DestroyWnd;
FreeAndNil(FCanvas);
inherited Destroy;
FreeAndNil(FItems);
end;
The Destroying; can accelerate the destruction and DestroyWnd will clean up.
Maybe such things should be added to more controls.
I think, we should keep fItems like the VCL until after the "inherited
Destroy;".
Mattias
More information about the Lazarus
mailing list