Deswegen ja die Frage in welchen kombinationen man es manuell freigeben muss und wann nicht, um meinen Code nach möglichen problemen zu durchsuchen
Das Datenmodul musst du nie manuell freigeben, wenn es einen passenden Owner hat.
Aber wie schon geschrieben:
Ich kann nur sehr davon abraten Interfaces direkt in visuellen Komponenten zu implementieren. Sprich so etwas:
Delphi-Quellcode:
TBlub = class(TDataModule, ITest)
...
Das macht nur recht schwer zu findende Probleme, wenn man nicht sehr aufpasst. Den Fehler haben wir auch mal gemacht, aber sind dann schnell davon abgekommen und haben noch einmal eine saubere Architektur entworfen.
Das sieht dann so ca. aus:
Delphi-Quellcode:
IData = interface
end;
TMyButton = class(TButton)
FData: IData;
end;
IButton = interface
Instance: TMyButton;
Data: IData;
end;
Dazu noch entsprechende Events zur Kommunikation von Änderungen, der Freigabe des TMyButton Controls, wobei die Instanz von TMyButton auf nil gesetzt wird.
Das ist bei uns noch umfangreicher, aber das ist die Grundidee.