Browse Source

* tcomponent.destroying is now called in tcomponent.beforedestruction

florian 21 years ago
parent
commit
baf21e0d50
2 changed files with 22 additions and 8 deletions
  1. 10 6
      fcl/classes/classesh.inc
  2. 12 2
      fcl/classes/compon.inc

+ 10 - 6
fcl/classes/classesh.inc

@@ -1173,6 +1173,7 @@ type
     procedure WriteState(Writer: TWriter); virtual;
     procedure WriteState(Writer: TWriter); virtual;
     constructor Create(AOwner: TComponent); virtual;
     constructor Create(AOwner: TComponent); virtual;
     destructor Destroy; override;
     destructor Destroy; override;
+    procedure BeforeDestruction; override;
     procedure DestroyComponents;
     procedure DestroyComponents;
     procedure Destroying;
     procedure Destroying;
     function ExecuteAction(Action: TBasicAction): Boolean; dynamic;
     function ExecuteAction(Action: TBasicAction): Boolean; dynamic;
@@ -1345,7 +1346,7 @@ type
     Procedure ReadState(Reader: TReader); override;
     Procedure ReadState(Reader: TReader); override;
   public
   public
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
-    Constructor CreateNew(AOwner: TComponent); 
+    Constructor CreateNew(AOwner: TComponent);
     Constructor CreateNew(AOwner: TComponent; CreateMode: Integer); virtual;
     Constructor CreateNew(AOwner: TComponent; CreateMode: Integer); virtual;
     destructor Destroy; override;
     destructor Destroy; override;
     Procedure AfterConstruction; override;
     Procedure AfterConstruction; override;
@@ -1357,9 +1358,9 @@ type
     property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
     property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
     property OldCreateOrder: Boolean read FOldOrder write FOldOrder;
     property OldCreateOrder: Boolean read FOldOrder write FOldOrder;
   end;
   end;
-  
-var 
-  // IDE hooks for TDatamodule support. 
+
+var
+  // IDE hooks for TDatamodule support.
   AddDataModule              : procedure (DataModule: TDataModule) of object;
   AddDataModule              : procedure (DataModule: TDataModule) of object;
   RemoveDataModule           : procedure (DataModule: TDataModule) of object;
   RemoveDataModule           : procedure (DataModule: TDataModule) of object;
   ApplicationHandleException : procedure (Sender: TObject) of object;
   ApplicationHandleException : procedure (Sender: TObject) of object;
@@ -1368,7 +1369,7 @@ var
 { ---------------------------------------------------------------------
 { ---------------------------------------------------------------------
     General streaming and registration routines
     General streaming and registration routines
   ---------------------------------------------------------------------}
   ---------------------------------------------------------------------}
-  
+
 
 
 var
 var
   RegisterComponentsProc: procedure(const Page: string;
   RegisterComponentsProc: procedure(const Page: string;
@@ -1469,7 +1470,10 @@ function LineStart(Buffer, BufPos: PChar): PChar;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.2  2003-10-07 19:41:11  marco
+  Revision 1.3  2004-08-07 16:32:52  florian
+    * tcomponent.destroying is now called in tcomponent.beforedestruction
+
+  Revision 1.2  2003/10/07 19:41:11  marco
    * 1.0.x compability fix
    * 1.0.x compability fix
 
 
   Revision 1.1  2003/10/06 20:33:58  peter
   Revision 1.1  2003/10/06 20:33:58  peter

+ 12 - 2
fcl/classes/compon.inc

@@ -377,6 +377,7 @@ Destructor TComponent.Destroy;
 Var Runner : Longint;
 Var Runner : Longint;
 
 
 begin
 begin
+  Destroying;
   If Assigned(FFreeNotifies) then
   If Assigned(FFreeNotifies) then
     begin
     begin
     For Runner:=0 To FFreeNotifies.Count-1 do
     For Runner:=0 To FFreeNotifies.Count-1 do
@@ -384,13 +385,19 @@ begin
     FFreeNotifies.Free;
     FFreeNotifies.Free;
     FFreeNotifies:=Nil;
     FFreeNotifies:=Nil;
     end;
     end;
-  Destroying;
   DestroyComponents;
   DestroyComponents;
   If FOwner<>Nil Then FOwner.RemoveComponent(Self);
   If FOwner<>Nil Then FOwner.RemoveComponent(Self);
   inherited destroy;
   inherited destroy;
 end;
 end;
 
 
 
 
+Procedure TComponent.BeforeDestruction;
+begin
+  if not(csDestroying in ComponentState) then
+    Destroying;
+end;
+
+
 Procedure TComponent.DestroyComponents;
 Procedure TComponent.DestroyComponents;
 
 
 Var acomponent: TComponent;
 Var acomponent: TComponent;
@@ -533,7 +540,10 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.1  2003-10-06 20:33:58  peter
+  Revision 1.2  2004-08-07 16:32:52  florian
+    * tcomponent.destroying is now called in tcomponent.beforedestruction
+
+  Revision 1.1  2003/10/06 20:33:58  peter
     * classes moved to rtl for 1.1
     * classes moved to rtl for 1.1
     * classes .inc and classes.pp files moved to fcl/classes for
     * classes .inc and classes.pp files moved to fcl/classes for
       backwards 1.0.x compatiblity to have it in the fcl
       backwards 1.0.x compatiblity to have it in the fcl