Also zuerst noch mal vielen Dank. Damit kann ich die bestehende Klassenstruktur demnächst mal um einiges vereinfachen.
An einer Stelle hänge ich aber noch:
Wie kann ich erkennen dass das ParentObject meine TBaseObjectList ist? In meinem Konstrukt kann ParentObject die TBaseObjectList sein. Es könnte aber auch eine von TBase abgeleitete Klasse sein, eine unabhängige Klasse oder NIL
Kein Problem mit NIL und den "normalen" Klassen, aber die Typprüfung nach der Liste klappt nicht.
Folgendes läuft zwar, aber mir wäre es lieber, ich würde die Message wirklich nur an meine TBaseObjectList schicken
Delphi-Quellcode:
procedure TBase.SetChanged(const Value: Boolean);
var
msg: TDispatchMessage;
begin
if FChanged <> Value then
begin
FChanged := Value;
if Value then
begin
if (FParentObject is TBase) then
TBase(FParentObject).Changed := Value
// else if (FParentObject is TObjectList<TBase>) then // funktioniert nicht, d.h. geht auch bei TObjectList nicht in den Block
else if (FParentObject <> nil) then
begin
msg.MsgID := cNotifyChanged;
FParentObject.Dispatch(msg);
end;
end;
end;
end;
Das mit dem Dispatch war übrigens ein super Hinweis dessen Verwendung ich bisher gar nicht kannte.