Ver Fonte

* readded BeforeDestructor that calls Destroying (delphi compatibility issue)
* uncommented code in Notification procedure (delphi compatibility issue)

git-svn-id: trunk@13874 -

ivost há 16 anos atrás
pai
commit
fff6e218af
2 ficheiros alterados com 12 adições e 6 exclusões
  1. 1 0
      rtl/objpas/classes/classesh.inc
  2. 11 6
      rtl/objpas/classes/compon.inc

+ 1 - 0
rtl/objpas/classes/classesh.inc

@@ -1557,6 +1557,7 @@ type
     procedure WriteState(Writer: TWriter); virtual;
     constructor Create(AOwner: TComponent); virtual;
     destructor Destroy; override;
+    procedure BeforeDestruction; override;
     procedure DestroyComponents;
     procedure Destroying;
     function ExecuteAction(Action: TBasicAction): Boolean; dynamic;

+ 11 - 6
rtl/objpas/classes/compon.inc

@@ -237,7 +237,7 @@ end;
 Procedure TComponent.Notification(AComponent: TComponent;
   Operation: TOperation);
 
-//Var Runner : Longint;
+Var Runner : Longint;
 
 begin
   If (Operation=opRemove) and Assigned(FFreeNotifies) then
@@ -250,11 +250,9 @@ begin
       Exclude(FComponentState, csFreeNotification);
       end;
     end;
-{ disabled this code: do we really have to notify the child components also? Each observer
-  should register itself to it's subject! }
-  {If assigned(FComponents) then
+  If assigned(FComponents) then
     For Runner:=0 To FComponents.Count-1 do
-      TComponent(FComponents.Items[Runner]).Notification(AComponent,Operation);}
+      TComponent(FComponents.Items[Runner]).Notification(AComponent,Operation);
 end;
 
 
@@ -411,13 +409,20 @@ begin
 end;
 
 
+Procedure TComponent.BeforeDestruction;
+
+begin
+  Destroying;
+  inherited BeforeDestruction;
+end;
+
+
 Destructor TComponent.Destroy;
 
 Var
   I : Integer;
   L : TList;
 begin
-  Destroying;
   If Assigned(FFreeNotifies) then
     begin
     L := FFreeNotifies;