Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#6

Re: WM_NCDestroy - Implementierung erzwingen - aber wie?

  Alt 22. Jan 2009, 15:54
Dann wirst du wohl der anderen Klasse irgendwie miteilen müssen, daß die Klasse sich jetzt selbst löscht.
und die andere Klasse die entsprechende Referenz auf nil setzen soll.

Delphi-Quellcode:
Type
   TKlasse1 = Class; {forward declaration}
   TKlasse2 = Class(TForm)
      Klasse1: TKlasse1;
   End;
   TKlasse1 = Class(TForm)
      ElternKlasse: TKlasse2;
      Procedure WM_NCDestroy(Var Message: TWMNCDestroy); message WM_NCDestroy;
   End;

Procedure TKlasse2.irgendwas;
Begin
   Klasse1 := TKlasse1.Create;
   Klasse1.ElternKlasse := Self; // dieses hier würde sich aber auch ganz gut
                                  // in einem Constructor von Klasse1 machen
End;

Procedure TKlasse1.WM_NCDestroy(Var Message: TWMNCDestroy);
Begin
   Inherited;
   ElternKlasse.Klasse1 := nil; // wobei es sich hier gut macht, wenn man dieses
                                 // in eine Prozedur von TKlasse2 auslagert
   Self.Free;
End;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat