TVaComm in own component

I created a component that has a TVaComm as a private member according to the following simplified model:

unit sstest;

interface
uses
Winapi.Windows, Winapi.Messages,
System.SysUtils, System.Variants, System.Classes, System.IniFiles,
Vcl.ExtCtrls, VaClasses, VaComm;

type
TssTest = class(TComponent)
private
fComm: TVaComm;
fPort: integer;
procedure SetPort(Value: integer);
function GetPort: integer;
public
constructor Create(AOwner: TComponent);
destructor Destroy;
published
property Port: integer read GetPort write fPort;
end;

procedure Register;

implementation

{ TssTest }

constructor TssTest.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fComm := TVaComm.Create(self);
end;

destructor TssTest.Destroy;
begin
fComm.Free;
end;

function TssTest.GetPort: integer;
begin
Result := fComm.PortNum;
end;

procedure TssTest.SetPort(Value: integer);
begin
fComm.PortNum := Value;
end;

procedure Register;
begin
RegisterComponents('MyComponents', [TssTest]);
end;

end.

When I create the component in an application at runtime it is working well.
But when I try to place the component from the component palette to a form it crashes with a lot of error messages from Delphi.
May be this is not a problem of TVaComm itself, but more of my insufficient knowledge about component development. But I tried to find a solution in the web without success, so I hope someone can help me here.

Regards

The framework will release the object instance for you as you pass self when calling Create. No need to release it manually. You will also need to call the destructor of the base class.

Please either do not overwrite the destructor or try rewriting Destroy as:

destructor TssTest.Destroy;
begin
 inherited Destroy;
end;

At first sorry for placing the theme under the topics for TMS VCL UI Pack. I wondered why I couldn't post it for TMSAsync. But I have another account at TMS where I am registered for TMSAsync.

Thanks for the hint with the destructor, but this will not solve the problem.
The problem occurs by defining properties that try to access fComm, e.g.

published
property Port: integer read GetPort write SetPort;

function TssTest.GetPort: integer;
begin
  Result := fComm.PortNum;
end;

procedure TssTest.SetPort(Value: integer);
begin
  fComm.PortNum := Value;
end;

As already mentioned the problem occurs when I try to place the registered component on a form.

Is your constructor executed?
Did you verify if fComm is assigned when GetPort or SetPort is called by the IDE?

My mistake was the declaration of the constructor, that must have the override directive:

constructor Create(AOwner: TComponent); override;

Thanks.