浏览代码

Stop TBitmapImageImplementation.BitmapChanged from removing csParentBackground and setting csOpaque.

For UpdatePanelCloseBitBtn it doesn't work since FControl.Width/Height is 0 when this function is called, which it is only once. So UpdatePanelCloseBitBtn always has csOpaque set even though it isn't opaque.

When both the whatsnew and purchase banners are visible (which have different colors), and the user closes the top banner, this makes the color of the close button become wrong. Invalidating doesn't work since Delphi checks for csParentBackground then.

Also bitmaps can be transparent so it makes no sense anyway?
Martijn Laan 4 周之前
父节点
当前提交
aafda23ae5
共有 2 个文件被更改,包括 2 次插入6 次删除
  1. 1 1
      Components/BitmapButton.pas
  2. 1 5
      Components/BitmapImage.pas

+ 1 - 1
Components/BitmapButton.pas

@@ -79,7 +79,7 @@ end;
 constructor TBitmapButton.Create(AOwner: TComponent);
 begin
   inherited;
-  ControlStyle := ControlStyle + [csReplicatable] - [csClickEvents];
+  ControlStyle := ControlStyle + [csParentBackground, csReplicatable] - [csClickEvents];
   { Using a fixed focus border width/height to avoid design problems between systems }
   FFocusBorderWidthHeight := 2;
   const DoubleFBWH = 2*FFocusBorderWidthHeight;

+ 1 - 5
Components/BitmapImage.pas

@@ -179,10 +179,6 @@ begin
   if AutoSize and (Bitmap.Width > 0) and (Bitmap.Height > 0) then
     FControl.SetBounds(FControl.Left, FControl.Top, Bitmap.Width + AutoSizeExtraWidth,
       Bitmap.Height + AutoSizeExtraHeight);
-  if (Bitmap.Width >= FControl.Width) and (Bitmap.Height >= FControl.Height) then
-    FControl.ControlStyle := FControl.ControlStyle + [csOpaque] - [csParentBackground]
-  else
-    FControl.ControlStyle := FControl.ControlStyle - [csOpaque] + [csParentBackground];
   FControl.Invalidate;
 end;
 
@@ -318,7 +314,7 @@ end;
 constructor TBitmapImage.Create(AOwner: TComponent);
 begin
   inherited;
-  ControlStyle := ControlStyle + [csReplicatable];
+  ControlStyle := ControlStyle + [csParentBackground, csReplicatable];
   FImpl.Init(Self);
   FImpl.BackColor := clBtnFace;
   Width := 105;