@hoika: ein FInnerList.Clear reicht auch aus um alle Listeneinträge der TList zu entfernen, das hat Luckie auch gemacht (allerdings ist der code bei ihm auskommentiert).
Delphi-Quellcode:
procedure TPageCollection.Clear;
var
i: Integer;
begin
for i := FInnerList.Count - 1 downto 0 do
begin
TObject(FInnerList.Items[i]).Free;
end;
FInnerList.Clear;
end;