Browse Source

Fix crash when removing component.

lainz 5 years ago
parent
commit
e71f86f7fb
3 changed files with 30 additions and 0 deletions
  1. 10 0
      bgrathemebutton.pas
  2. 10 0
      bgrathemecheckbox.pas
  3. 10 0
      bgrathemeradiobutton.pas

+ 10 - 0
bgrathemebutton.pas

@@ -19,6 +19,8 @@ type
     FState: TBGRAThemeButtonState;
     procedure SetFTheme(AValue: TBGRATheme);
   protected
+    procedure Notification(AComponent: TComponent;
+                            Operation: TOperation); override;
     class function GetControlClassDefaultSize: TSize; override;
     procedure MouseEnter; override;
     procedure MouseLeave; override;
@@ -59,6 +61,14 @@ begin
   Invalidate;
 end;
 
+procedure TBGRAThemeButton.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited Notification(AComponent, Operation);
+  if (Operation = opRemove) and (AComponent = FTheme)
+    then FTheme := nil;
+end;
+
 class function TBGRAThemeButton.GetControlClassDefaultSize: TSize;
 begin
   Result.CX := 125;

+ 10 - 0
bgrathemecheckbox.pas

@@ -22,6 +22,8 @@ type
     procedure SetFChecked(AValue: boolean);
     procedure SetFTheme(AValue: TBGRATheme);
   protected
+    procedure Notification(AComponent: TComponent;
+                            Operation: TOperation); override;
     class function GetControlClassDefaultSize: TSize; override;
     procedure MouseEnter; override;
     procedure MouseLeave; override;
@@ -64,6 +66,14 @@ begin
   Invalidate;
 end;
 
+procedure TBGRAThemeCheckBox.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited Notification(AComponent, Operation);
+  if (Operation = opRemove) and (AComponent = FTheme)
+    then FTheme := nil;
+end;
+
 procedure TBGRAThemeCheckBox.SetFChecked(AValue: boolean);
 begin
   if FChecked = AValue then

+ 10 - 0
bgrathemeradiobutton.pas

@@ -22,6 +22,8 @@ type
     procedure SetFChecked(AValue: boolean);
     procedure SetFTheme(AValue: TBGRATheme);
   protected
+    procedure Notification(AComponent: TComponent;
+                            Operation: TOperation); override;
     class function GetControlClassDefaultSize: TSize; override;
     procedure MouseEnter; override;
     procedure MouseLeave; override;
@@ -65,6 +67,14 @@ begin
   Invalidate;
 end;
 
+procedure TBGRAThemeRadioButton.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited Notification(AComponent, Operation);
+  if (Operation = opRemove) and (AComponent = FTheme)
+    then FTheme := nil;
+end;
+
 procedure TBGRAThemeRadioButton.SetFChecked(AValue: boolean);
 begin
   if FChecked = AValue then