Ich habe selbst eine Lösung gebaut, die aber nur für meine "speziellen" Komponenten funktioniert (also nicht für Standardkomponenten, was sicher mal eine gute Sache für künftige Delphi-Versionen wäre - ähnlich, wie es mit TObjectList eingeführt wurde).
Ich habe sichtbare Komponenten (Tsc), die Datenkompnenten (Tdc) verwenden. Die
DC werden in benötigter Menge erzeugt und beliebig viele SC können auf ein unbd die selbe
DC zugreifen, um die Daten zu verwenden (anzeigen + ändern).
Wird durch die Geschäftslogik eine
DC gelöscht, erfahren das die SC nicht automatisch.
DC.Free
sollte für alle existierenden SC, bei denen SC.DC = freigegebeneDC ist
SC.DC := nil
setzen.
Ich mache das selbst, indem ich alle SC in einer TComponentList sammle und die "Nilung" im Tdc.Destroy selbst veranlasse.
Eine grundsätzliche Lösung hielte ich jedoch für nützlich.
Für "normale" Variablen halte ich eine Umsetzung auch für möglich (ähnlich TComponentList), sofern Propertys mit Getter und Setter-Methoden "genilt" werden müssen, wird es aber sicher deutlich schwieriger.