Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: TObjectList als Komponente

  Alt 4. Dez 2007, 10:59
Zitat von oki:
Als ich aber mal bei den Jedis in den Source geschaut habe ist mir aufgefallen, dass dort Componenten teilweise auch Interfaces in der Klassenableitung haben. Richtig hinter gestiegen bin ich da zwar nicht, aber auch daher kommt meine Vermutung, dass man das machen kann.
Ja, TComponent implementiert das Interface IUnknown auf spezielle Weise.
Wenn das Property VCLComObject = nil ist, dann wird die Referenzzählung ausser Kraft gesetzt und man kann
Objekt- und Interfacereferenzen mischen.
Also man kann folgendes schreiben:
Delphi-Quellcode:
TCompTransactionList = class(TComponent, ITransactionList)
...
var
   tl : TComponent;
   intf : ITransactionList
begin
   tl := TCompTransactionList.Create(nil);
   ...
   intf := tl as ITransactionList;
   intf.ExecuteTransactions;
   intf := nil; // wir haben Glück, das Objekt tl wird nicht zerstört
   ...
   tl.Free;
Andreas
  Mit Zitat antworten Zitat