Interfaces bringen jetzt an der Stelle nicht wirklich viel.
Ich würde auch grundsätzlich zu Interfaces raten, aber man muss sich erst damit befassen. Die Klassen muss man dann aber auch differenziert ausgestalten.
Ich würde es so machen:
Delphi-Quellcode:
TBase = class
private
FNr: Integer;
FParentObject: TObject;
public
property Nr: Integer read FNr write FNr;
property ParentObject: TObject read FParentObject write FParentObject;
end;
TMessData1List = class(TBase)
private
fItems: (TObjectList<TMessData1>);
function get_Item(const Index: Integer): TMessData1;
procedure set_Item(const Index: Integer; Value: TMessData1);
public
procedure Add(Item: TMessData1);
procedure Delete(Item: TMessData1); overload;
procedure Delete(Index: Integer); overload; // alle Methoden, die für die Liste gebraucht werden
protected
public
property Items[const Index: Integer]: TMessData1 read get_Item write set_Item; // weiß nicht, ob die Syntax so richtig ist
end;