Thema: Delphi Interfaced Components

Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Interfaced Components

  Alt 10. Mär 2014, 22:01
Ein lebhaftes Beispiel: In einer Anwendung soll man eine Preisdifferenz einstellen können. Der eine mag es lieber mit einer Trackbar, der andere mit einem Spinedit, was auch immer.

Im Anhang das kleine Bild: Ich möchte ein Interface schaffen und die Komponenten (generell Frames) per Interface ansprechen.

Zur Erinnerung: Alles ab TComponent lässt sich per Interface referenzieren, aber ARC ist komplett abgeschaltet. Die Lebenszeit einer Komponente wird über den im Konstruktor angegebenen Owner bestimmt.

Mein Problem: Wie kann ich eine Komponente nun abräumen, wenn ich sie nur per Interface referenziere?
  • Ich könnte eine Dispose()-Methode im Interface vorgeben. Nur damit bleibt die Möglichkeit, dass sich jemand anders die Komponente auch referenziert und dann auf einen Haufen Müll zeigt
  • Die Dokumentation zu TComponent spricht: "Komplexere Komponenten sollten __AddRef überschreiben, um eine Referenzzählung zu implementieren." Ich würde ja gerne. Leider haben die Delphi-Jungs vergessen, die Methode virtuell zu machen.

Was kann ich tun?
Miniaturansicht angehängter Grafiken
interfacedcomponents.png  
  Mit Zitat antworten Zitat