kA was du meinst, ist es vll sowas in der Art:

Code:
// Untested
TListObject = class
private
  loNext: TListObject;
  loPrev: TListObject;
public
  function AddNext: TListObject;
  constructor Create(Parent: TListObject);
  property GetPrevious: TListObject read loPrev;
  property GetNext: TListObject read loNext;
end;

constructor TListObject.Create(Parent: TListObject);
begin
  loPrev := Parent;
  loNext := nil;
end;

function TListObject.AddNext: TListObject;
begin
  if loNext <> nil then
  begin
    // Error already has a next
    Result := nil;
  end
  else
  begin
    loNext := TListObject.Create(self);
    Result := loNext;
  end;
end;
Oder sowas in der Art?