Wozu ist denn alles als virtual deklariert?
Bringt zu diesem Zeitpunkt eh nix mehr.
Wird auch überall TGesellschafterObjListe verwendet und nicht TObjectList/TList?
TList kennt deine Änderungen ja nicht.
Ich würde eher Notify über schreiben und dort das OnChange-Event auslösen, da kommen alle Meldungen (hinzugefügt/gelöscht) vorbei.
Delphi-Quellcode:
protected
procedure Notify(Ptr: Pointer; Action: TListNotification); override;