destructor Destroy; override;
__fastcall virtual ~TCustomActionControl();
Applications should only free controls explicitly when the constructor was called without assigning an owner to the control.
As the control is destroyed, it frees the TCanvas object in its Canvas property.
Override Destroy to free any memory or resources allocated in the Create method. When declaring a Destroy method in a descendent control type, always add the override directive to the declaration and call the inherited Destroy as the last statement in the redeclared method.
When a control is created, Delphi automatically provides exception handling around the constructor call. The destructor is called if an exception escapes from the constructor. This means that the destructor code must be prepared to clean up a partially constructed instance. Check all data fields for zero before disposing of their contents.