So sollte es auf der sicheren Seite sein:
Delphi-Quellcode:
type
TBase = class;
TBaseObjectList = class(TObjectList<TBase>)
private
FChanged: Boolean;
public
constructor Create(AOwnsObjects: Boolean = True); overload;
property Changed: Boolean read FChanged write FChanged;
end;
TBaseObjectList<T: TBase> = class(TBaseObjectList);
Dann kannst du auch wieder auf TBaseObjectList prüfen und casten:
Delphi-Quellcode:
procedure TBase.SetChanged(const Value: Boolean);
begin
if FChanged <> Value then begin
FChanged := Value;
if (FParentObject is TBaseObjectList) then
TBaseObjectList(FParentObject).Changed := True;
end;
end;