1. Ein free reicht völlig.
2. Ein Nil setzen muss nicht sein, der Eintrag fliegt eh raus. Du hast ja ein TList Nachkommen und keinen TObjectList Nachkommen, der selber versuchen würde das zu entfernende Element zu löschen (was beim zuweisen von Nil auf einen Item auch geschehen würde).
Daher:
Delphi-Quellcode:
var lObj: TObject;
begin
lObj := Liste.Items[Index];
Liste.Delete(Index);
lObj.Free; // kann genauso gut vor dem Delete() stehen, das ist Schnuppe...
end;
Bzw. Luckies Version:
Delphi-Quellcode:
procedure TPageCollection.Delete(Index: Integer);
begin
Self.Items[Index].Free;
inherited Delete(Index);
Self.Rename;
end;