That's not too bad. I'm still not a fan of TVector as a class from a memory and efficiency point of view, but you are at least using it consistently.

When calling Free on a class instance, you do not need to check that the class instance is not nil first. Free does that already.

System.pas
Code:
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;
Not much else to comment on really. The class design seems to be pretty good.