2
0
Johann 6 жил өмнө
parent
commit
a1f5073325

+ 44 - 75
lazpaint/lazpaintmainform.lfm

@@ -1110,16 +1110,13 @@ object FMain: TFMain
         Style = tbsCheck
       end
     end
-    object Combo_GradientColorspace: TComboBox
-      Left = 156
-      Height = 36
-      Top = 1
-      Width = 148
-      Font.Height = -15
-      ItemHeight = 0
-      ParentFont = False
-      Style = csDropDownList
-      TabOrder = 1
+    object Combo_GradientColorspace: TBCComboBox
+      Left = 154
+      Height = 29
+      Top = 3
+      Width = 151
+      ItemIndex = -1
+      DropDownBorderColor = clBlack
     end
   end
   object Panel_Undo: TPanel
@@ -1282,32 +1279,6 @@ object FMain: TFMain
         Style = tbsCheck
       end
     end
-    object ComboBox_ArrowStart: TComboBox
-      Left = 0
-      Height = 36
-      Top = 1
-      Width = 56
-      AutoSize = False
-      DropDownCount = 12
-      Font.Height = -15
-      ItemHeight = 21
-      ParentFont = False
-      Style = csOwnerDrawFixed
-      TabOrder = 1
-    end
-    object ComboBox_ArrowEnd: TComboBox
-      Left = 57
-      Height = 36
-      Top = 1
-      Width = 56
-      AutoSize = False
-      DropDownCount = 12
-      Font.Height = -15
-      ItemHeight = 21
-      ParentFont = False
-      Style = csOwnerDrawFixed
-      TabOrder = 2
-    end
     object SpinEdit_ArrowSizeX: TBCTrackbarUpdown
       Left = 116
       Height = 25
@@ -1420,7 +1391,7 @@ object FMain: TFMain
       Font.Name = 'Arial'
       HasTrackBar = True
       ArrowColor = clBtnText
-      TabOrder = 3
+      TabOrder = 1
       TabStop = True
       UseDockManager = False
     end
@@ -1536,10 +1507,26 @@ object FMain: TFMain
       Font.Name = 'Arial'
       HasTrackBar = True
       ArrowColor = clBtnText
-      TabOrder = 4
+      TabOrder = 2
       TabStop = True
       UseDockManager = False
     end
+    object ComboBox_ArrowStart: TBCComboBox
+      Left = 2
+      Height = 29
+      Top = 2
+      Width = 54
+      ItemIndex = -1
+      DropDownBorderColor = clBlack
+    end
+    object ComboBox_ArrowEnd: TBCComboBox
+      Left = 59
+      Height = 29
+      Top = 2
+      Width = 54
+      ItemIndex = -1
+      DropDownBorderColor = clBlack
+    end
   end
   object Panel_JoinStyle: TPanel
     Left = 460
@@ -2137,27 +2124,6 @@ object FMain: TFMain
     ParentColor = False
     ParentFont = False
     TabOrder = 19
-    object Combo_SplineStyle: TComboBox
-      Left = 57
-      Height = 32
-      Top = 1
-      Width = 148
-      Font.Height = -15
-      ItemHeight = 0
-      Items.Strings = (
-        'Inside'
-        'Inside + ends'
-        'Crossing'
-        'Crossing + ends'
-        'Outside'
-        'Round outside'
-        'Vertex to side'
-        'Easy Bézier'
-      )
-      ParentFont = False
-      Style = csDropDownList
-      TabOrder = 0
-    end
     object Label_Curve: TLabel
       Left = 5
       Height = 28
@@ -2181,7 +2147,7 @@ object FMain: TFMain
       Font.Height = -15
       Images = ImageList16
       ParentFont = False
-      TabOrder = 1
+      TabOrder = 0
       object Tool_CurveModeAngle: TToolButton
         Left = 59
         Hint = 'Draw an angle'
@@ -2211,6 +2177,14 @@ object FMain: TFMain
         Style = tbsCheck
       end
     end
+    object Combo_SplineStyle: TBCComboBox
+      Left = 56
+      Height = 29
+      Top = 3
+      Width = 152
+      ItemIndex = -1
+      DropDownBorderColor = clBlack
+    end
   end
   object Panel_Embedded: TPanel
     Left = 240
@@ -3421,19 +3395,6 @@ object FMain: TFMain
       ParentColor = False
       ParentFont = False
     end
-    object ComboBox_BrushSelect: TComboBox
-      Left = 56
-      Height = 36
-      Top = 1
-      Width = 56
-      AutoSize = False
-      DropDownCount = 12
-      Font.Height = -15
-      ItemHeight = 21
-      ParentFont = False
-      Style = csOwnerDrawFixed
-      TabOrder = 0
-    end
     object Label_Spacing: TLabel
       Left = 117
       Height = 28
@@ -3459,7 +3420,7 @@ object FMain: TFMain
       Images = ImageList16
       ParentColor = False
       ParentFont = False
-      TabOrder = 1
+      TabOrder = 0
       object ToolButton21: TToolButton
         Left = 1
         Top = 0
@@ -3588,10 +3549,18 @@ object FMain: TFMain
       Font.Name = 'Arial'
       HasTrackBar = True
       ArrowColor = clBtnText
-      TabOrder = 2
+      TabOrder = 1
       TabStop = True
       UseDockManager = False
     end
+    object ComboBox_BrushSelect: TBCComboBox
+      Left = 54
+      Height = 29
+      Top = 3
+      Width = 58
+      ItemIndex = -1
+      DropDownBorderColor = clBlack
+    end
   end
   object Panel_Ratio: TPanel
     Left = 10

+ 12 - 6
lazpaint/lazpaintmainform.pas

@@ -11,7 +11,7 @@ interface
 uses
   Classes, LMessages, SysUtils, LazFileUtils, LResources, Forms, Controls,
   Graphics, Dialogs, Menus, ExtDlgs, ComCtrls, ActnList, StdCtrls, ExtCtrls,
-  Buttons, types, LCLType, BGRAImageList, BCTrackbarUpdown,
+  Buttons, types, LCLType, BGRAImageList, BCTrackbarUpdown, BCComboBox, BCButton,
 
   BGRABitmap, BGRABitmapTypes, BGRALayers, BGRASVGOriginal,
 
@@ -28,6 +28,11 @@ type
   { TFMain }
 
   TFMain = class(TForm)
+    ComboBox_ArrowStart: TBCComboBox;
+    ComboBox_ArrowEnd: TBCComboBox;
+    ComboBox_BrushSelect: TBCComboBox;
+    Combo_SplineStyle: TBCComboBox;
+    Combo_GradientColorspace: TBCComboBox;
     SpinEdit_PenOpacity: TBCTrackbarUpdown;
     FilterWaveDisplacement: TAction;
     SpinEdit_BackOpacity: TBCTrackbarUpdown;
@@ -66,7 +71,6 @@ type
     ToolHotSpot: TAction;
     Combo_Ratio: TComboBox;
     FileUseImageBrowser: TAction;
-    Combo_GradientColorspace: TComboBox;
     ItemUseImageBrowser: TMenuItem;
     Label_Ratio: TLabel;
     Panel_Ratio: TPanel;
@@ -80,7 +84,6 @@ type
     BrushRemoveCurrent: TAction;
     BrushLoadFromFile: TAction;
     BrushCreateGeometric: TAction;
-    ComboBox_BrushSelect: TComboBox;
     Label_Brush: TLabel;
     Label_Spacing: TLabel;
     MenuDockToolboxLeft: TMenuItem;
@@ -102,8 +105,6 @@ type
     ToolButton7: TToolButton;
     ToolChangeDocking: TAction;
     FilterBlurBox: TAction;
-    ComboBox_ArrowStart: TComboBox;
-    ComboBox_ArrowEnd: TComboBox;
     EditPasteAsNewLayer: TAction;
     ItemDockLayersAndColors: TMenuItem;
     ItemFullscreen: TMenuItem;
@@ -309,7 +310,6 @@ type
     ToolBar15: TToolBar;
     Tool_TextFont: TToolButton;
     Tool_TextShadow: TToolButton;
-    Combo_SplineStyle: TComboBox;
     PaintBox_Picture: TPaintBox;
     PaintBox_PenPreview: TPaintBox;
     Panel_Embedded: TPanel;
@@ -412,12 +412,18 @@ type
     procedure ComboBox_ArrowEndChange(Sender: TObject);
     procedure ComboBox_ArrowEndDrawItem({%H-}Control: TWinControl; Index: Integer;
       ARect: TRect; State: TOwnerDrawState);
+    procedure ComboBox_ArrowEndDrawSelectedItem(Sender: TObject; const ABGRA: TBGRABitmap;
+        AState: TBCButtonState; ARect: TRect);
     procedure ComboBox_ArrowStartChange(Sender: TObject);
     procedure ComboBox_ArrowStartDrawItem({%H-}Control: TWinControl; Index: Integer;
       ARect: TRect; State: TOwnerDrawState);
+    procedure ComboBox_ArrowStartDrawSelectedItem(Sender: TObject; const ABGRA: TBGRABitmap;
+        AState: TBCButtonState; ARect: TRect);
     procedure ComboBox_BrushSelectChange(Sender: TObject);
     procedure ComboBox_BrushSelectDrawItem({%H-}Control: TWinControl;
       Index: Integer; ARect: TRect; State: TOwnerDrawState);
+    procedure ComboBox_BrushSelectDrawSelectedItem(Sender: TObject; const ABGRA: TBGRABitmap;
+        AState: TBCButtonState; ARect: TRect);
     procedure Combo_RatioChange(Sender: TObject);
     procedure EditCopyExecute(Sender: TObject);
     procedure EditCopyUpdate(Sender: TObject);

+ 67 - 11
lazpaint/maintoolbar.inc

@@ -19,8 +19,10 @@ begin
   Tool_CapSquare.OnClick := @Tool_CapSquareClick;
   ComboBox_ArrowStart.OnChange := @ComboBox_ArrowStartChange;
   ComboBox_ArrowStart.OnDrawItem := @ComboBox_ArrowStartDrawItem;
+  ComboBox_ArrowStart.OnDrawSelectedItem := @ComboBox_ArrowStartDrawSelectedItem;
   ComboBox_ArrowEnd.OnChange := @ComboBox_ArrowEndChange;
   ComboBox_ArrowEnd.OnDrawItem := @ComboBox_ArrowEndDrawItem;
+  ComboBox_ArrowEnd.OnDrawSelectedItem := @ComboBox_ArrowEndDrawSelectedItem;
   Tool_JoinBevel.OnClick := @Tool_JoinBevelClick;
   Tool_JoinRound.OnClick := @Tool_JoinRoundClick;
   Tool_JoinMiter.OnClick := @Tool_JoinMiterClick;
@@ -32,6 +34,14 @@ begin
   Tool_EraseAlpha.OnClick := @Tool_EraseOptionClick;
   Tool_EraseBlur.OnClick := @Tool_EraseOptionClick;
   Tool_GridMoveWithoutDeformation.OnClick := @Tool_GridMoveWithoutDeformationClick;
+  Combo_SplineStyle.Items.Add('Inside');
+  Combo_SplineStyle.Items.Add('Inside + ends');
+  Combo_SplineStyle.Items.Add('Crossing');
+  Combo_SplineStyle.Items.Add('Crossing + ends');
+  Combo_SplineStyle.Items.Add('Outside');
+  Combo_SplineStyle.Items.Add('Round outside');
+  Combo_SplineStyle.Items.Add('Vertex to side');
+  Combo_SplineStyle.Items.Add('Easy Bézier');
   Combo_SplineStyle.OnChange := @Combo_SplineStyleChange;
   Tool_CurveMovePoint.OnClick := @Tool_CurveMovePointClick;
   Tool_CurveModeAuto.OnClick := @Tool_CurveModeAutoClick;
@@ -69,6 +79,7 @@ begin
   TimerHidePenPreview.OnTimer := @TimerHidePenPreviewTimer;
   ComboBox_BrushSelect.OnChange := @ComboBox_BrushSelectChange;
   ComboBox_BrushSelect.OnDrawItem := @ComboBox_BrushSelectDrawItem;
+  ComboBox_BrushSelect.OnDrawSelectedItem:= @ComboBox_BrushSelectDrawSelectedItem;
   Combo_Ratio.OnChange := @Combo_RatioChange;
 
   Panel_LineCap_FullSize := Panel_LineCap.Width;
@@ -96,9 +107,6 @@ begin
   SpinEdit_PenWidth.OnExit:= @SpinEdit_PenWidthExit;
   SpinEdit_PenWidth.BarExponent := 3;
 
-  ComboBox_ArrowStart.ItemIndex := 0;
-  ComboBox_ArrowEnd.ItemIndex := 0;
-
   SpinEdit_ArrowSizeX.MinValue := 10;
   SpinEdit_ArrowSizeX.MaxValue := 99;
   SpinEdit_ArrowSizeX.Value := 20;
@@ -845,7 +853,20 @@ var
 begin
   if Index = -1 then exit;
   kind := ComboBox_ArrowStart.Items[Index];
-  DrawArrow(ComboBox_ArrowStart.Canvas,ARect,True,kind,ToolManager.ToolLineCap,State);
+  DrawArrow(ComboBox_ArrowStart,ARect,True,kind,ToolManager.ToolLineCap,State);
+end;
+
+procedure TFMain.ComboBox_ArrowStartDrawSelectedItem(Sender: TObject; const ABGRA: TBGRABitmap;
+    AState: TBCButtonState; ARect: TRect);
+var
+  cb: TBCComboBox;
+  kind: String;
+begin
+  cb := ComboBox_ArrowStart;
+  if cb.ItemIndex = -1 then exit;
+  kind := cb.Text;
+  ARect.Inflate(-2,-2);
+  DrawArrow(ABGRA,ARect,True,kind,ToolManager.ToolLineCap,AState.FontEx.Color);
 end;
 
 procedure TFMain.ComboBox_ArrowEndChange(Sender: TObject);
@@ -885,7 +906,20 @@ var
 begin
   if Index = -1 then exit;
   kind := ComboBox_ArrowEnd.Items[Index];
-  DrawArrow(ComboBox_ArrowEnd.Canvas,ARect,False,kind,ToolManager.ToolLineCap,State);
+  DrawArrow(ComboBox_ArrowEnd,ARect,False,kind,ToolManager.ToolLineCap,State);
+end;
+
+procedure TFMain.ComboBox_ArrowEndDrawSelectedItem(Sender: TObject; const ABGRA: TBGRABitmap;
+    AState: TBCButtonState; ARect: TRect);
+var
+  cb: TBCComboBox;
+  kind: String;
+begin
+  cb := ComboBox_ArrowEnd;
+  if cb.ItemIndex = -1 then exit;
+  kind := cb.Text;
+  ARect.Inflate(-2,-2);
+  DrawArrow(ABGRA,ARect,False,kind,ToolManager.ToolLineCap,AState.FontEx.Color);
 end;
 
 procedure TFMain.SpinEdit_ArrowSizeChange(Sender: TObject; AByUser: boolean);
@@ -1498,18 +1532,20 @@ var brushIndex: integer;
     bmp: TBGRABitmap;
     c2: TBGRAPixel;
     c: TBGRAPixel;
+    cb: TBCComboBox;
 begin
   if Index = -1 then exit;
+  cb := ComboBox_BrushSelect;
   if odSelected in State then
   begin
-    c2 := ColorToBGRA(ColorToRGB(clHighlight));
-    c := ColorToBGRA(ColorToRGB(clHighlightText));
+    c2 := ColorToBGRA(cb.DropDownHighlight);
+    c := ColorToBGRA(cb.DropDownFontHighlight);
   end else
   begin
-    c2 := ColorToBGRA(ColorToRGB(clWindow));
-    c := ColorToBGRA(ColorToRGB(clWindowText));
+    c2 := ColorToBGRA(cb.DropDownColor);
+    c := ColorToBGRA(cb.DropDownFontColor);
   end;
-  brushIndex := StrToInt(ComboBox_BrushSelect.Items[Index]);
+  brushIndex := StrToInt(cb.Items[Index]);
   bi := ToolManager.ToolBrushAt[brushIndex];
   if bi <> nil then
   with bi do
@@ -1517,11 +1553,31 @@ begin
     bi.Size := ARect.Bottom-ARect.Top-2;
     bmp := TBGRABitmap.Create(ARect.Right-ARect.Left,ARect.Bottom-ARect.Top, c2);
     bi.Put(bmp, (bmp.Width-1) div 2, bi.BrushImage.Height div 2 + 1, c);
-    ComboBox_BrushSelect.Canvas.Draw(ARect.Left,ARect.Top,bmp.Bitmap);
+    cb.Canvas.Draw(ARect.Left,ARect.Top,bmp.Bitmap);
     bmp.Free;
   end;
 end;
 
+procedure TFMain.ComboBox_BrushSelectDrawSelectedItem(Sender: TObject; const ABGRA: TBGRABitmap;
+    AState: TBCButtonState; ARect: TRect);
+var
+  cb: TBCComboBox;
+  brushIndex: LongInt;
+  bi: TLazPaintBrush;
+  c: TColor;
+begin
+  cb := ComboBox_BrushSelect;
+  if cb.ItemIndex = -1 then exit;
+  brushIndex := StrToInt(cb.Text);
+  bi := ToolManager.ToolBrushAt[brushIndex];
+  c:= AState.FontEx.Color;
+  if bi <> nil then
+  begin
+    bi.Size := ARect.Height-2;
+    bi.Put(ABGRA, ARect.Left+ ARect.Width div 2, ARect.Top+ bi.BrushImage.Height div 2 +1, c);
+  end;
+end;
+
 procedure TFMain.ComboBox_BrushSelectChange(Sender: TObject);
 begin
   if initialized then

+ 49 - 29
lazpaint/ugraph.pas

@@ -6,7 +6,7 @@ interface
 
 uses
   Classes, SysUtils, bgrabitmap, bgrabitmaptypes, LazPaintType, Graphics, BGRALayers, LCLType,
-  BCButton;
+  BCButton, BCComboBox;
 
 const FrameDashLength = 4;
   NicePointMaxRadius = 4;
@@ -54,7 +54,8 @@ function WaveDisplacementFilter(source: TBGRACustomBitmap;
   AWaveLength, ADisplacement, APhase: single): TBGRACustomBitmap;
 
 function DoResample(source :TBGRABitmap; newWidth, newHeight: integer; StretchMode: TResampleMode): TBGRABitmap;
-procedure DrawArrow(ACanvas: TCanvas; ARect: TRect; AStart: boolean; AKindStr: string; ALineCap: TPenEndCap; State: TOwnerDrawState);
+procedure DrawArrow(AComboBox: TBCComboBox; ARect: TRect; AStart: boolean; AKindStr: string; ALineCap: TPenEndCap; State: TOwnerDrawState); overload;
+procedure DrawArrow(ABitmap: TBGRABitmap; ARect: TRect; AStart: boolean; AKindStr: string; ALineCap: TPenEndCap; AColor: TBGRAPixel); overload;
 procedure BCAssignSystemStyle(AButton: TBCButton; ADarkTheme: boolean);
 
 implementation
@@ -127,8 +128,8 @@ var highlight, btnFace, btnShadow, btnText: TColor;
 begin
   if ADarkTheme then
   begin
-    highlight := clDarkBtnHighlight;
-    btnFace := clDarkBtnFace;
+    highlight := $a0a0a0;
+    btnFace := clDarkEditableFace;
     btnText := clLightText;
     btnShadow:= clBlack;
   end else
@@ -791,26 +792,16 @@ begin
   result := source.Resample(newWidth,newHeight,StretchMode) as TBGRABitmap;
 end;
 
-procedure DrawArrow(ACanvas: TCanvas; ARect: TRect; AStart: boolean; AKindStr: string; ALineCap: TPenEndCap; State: TOwnerDrawState);
-var bmp : TBGRABitmap;
-  c,c2: TBGRAPixel;
-  x1,x2,xm1,xm2,y,w,temp: single;
+procedure DrawArrowMask(AMask: TBGRABitmap; AStart: boolean; AKindStr: string; ALineCap: TPenEndCap);
+var
   kind: TArrowKind;
+  x1,x2,xm1,xm2,y,w,temp: single;
 begin
+  AMask.Fill(BGRABlack);
   kind := StrToArrowKind(AKindStr);
-  if odSelected in State then
-  begin
-    c2 := ColorToBGRA(ColorToRGB(clHighlight));
-    c := ColorToBGRA(ColorToRGB(clHighlightText));
-  end else
-  begin
-    c2 := ColorToBGRA(ColorToRGB(clWindow));
-    c := ColorToBGRA(ColorToRGB(clWindowText));
-  end;
-  with Size(ARect) do bmp:= TBGRABitmap.Create(cx,cy,c2);
-  ApplyArrowStyle(bmp.Arrow,AStart,kind,PointF(1.5,1.5));
-  bmp.LineCap := ALineCap;
-  w := bmp.Height/5;
+  ApplyArrowStyle(AMask.Arrow,AStart,kind,PointF(1.5,1.5));
+  AMask.LineCap := ALineCap;
+  w := AMask.Height/5;
   if w > 0 then
   begin
     x1 := w*2.5;
@@ -826,19 +817,48 @@ begin
       x2 := -temp;
     end else
     begin
-      xm1 := (bmp.Width-0.5)-xm1;
-      xm2 := (bmp.Width-0.5)-xm2;
+      xm1 := (AMask.Width-0.5)-xm1;
+      xm2 := (AMask.Width-0.5)-xm2;
     end;
     x1 -= 0.5;
-    x2 += bmp.Width-0.5;
-    y := (bmp.Height-1)/2;
+    x2 += AMask.Width-0.5;
+    y := (AMask.Height-1)/2;
     if kind in[akTail,akNone,akTip] then w *= 2;
-    bmp.DrawLineAntialias(x1,y,x2,y,c,w);
-    if bmp.Width > bmp.Height*2 then
-      bmp.GradientFill(0,0,bmp.width,bmp.height,c2,BGRAPixelTransparent,gtLinear,PointF(xm1,0),PointF(xm2,0),dmDrawWithTransparency);
+    AMask.DrawLineAntialias(x1,y,x2,y,BGRAWhite,w);
+    if AMask.Width > AMask.Height*2 then
+      AMask.GradientFill(0,0,AMask.width,AMask.height,BGRABlack,BGRAPixelTransparent,gtLinear,PointF(xm1,0),PointF(xm2,0),dmDrawWithTransparency);
   end;
-  ACanvas.Draw(ARect.Left,ARect.Top,bmp.Bitmap);
+end;
+
+procedure DrawArrow(AComboBox: TBCComboBox; ARect: TRect; AStart: boolean; AKindStr: string; ALineCap: TPenEndCap; State: TOwnerDrawState);
+var mask, bmp : TBGRABitmap;
+  c,c2: TBGRAPixel;
+begin
+  if odSelected in State then
+  begin
+    c2 := ColorToBGRA(AComboBox.DropDownHighlight);
+    c := ColorToBGRA(AComboBox.DropDownFontHighlight);
+  end else
+  begin
+    c2 := ColorToBGRA(AComboBox.DropDownColor);
+    c := ColorToBGRA(AComboBox.DropDownFontColor);
+  end;
+  with Size(ARect) do mask:= TBGRABitmap.Create(cx,cy,BGRABlack);
+  DrawArrowMask(mask, AStart, AKindStr, ALineCap);
+  bmp := TBGRABitmap.Create(mask.Width,mask.Height,c2);
+  bmp.FillMask(0,0,mask,c,dmDrawWithTransparency);
+  bmp.Draw(ACombobox.Canvas,ARect.Left,ARect.Top,true);
   bmp.Free;
+  mask.Free;
+end;
+
+procedure DrawArrow(ABitmap: TBGRABitmap; ARect: TRect; AStart: boolean; AKindStr: string; ALineCap: TPenEndCap; AColor: TBGRAPixel); overload;
+var mask: TBGRABitmap;
+begin
+  with Size(ARect) do mask:= TBGRABitmap.Create(cx,cy,BGRABlack);
+  DrawArrowMask(mask, AStart, AKindStr, ALineCap);
+  ABitmap.FillMask(ARect.Left,ARect.Top, mask, AColor, dmDrawWithTransparency);
+  mask.Free;
 end;
 
 function CreateMarbleTexture(tx,ty: integer): TBGRABitmap;

+ 30 - 2
lazpaint/umenu.pas

@@ -51,7 +51,8 @@ type
 implementation
 
 uses UResourceStrings, BGRAUTF8, LCScaleDPI, ComCtrls, Graphics,
-  Spin, StdCtrls, BGRAText, math, udarktheme, BCTrackbarUpdown, BCTypes;
+  StdCtrls, BGRAText, math, udarktheme, BCTrackbarUpdown, BCTypes,
+  ugraph, BCComboBox, BGRABitmapTypes;
 
 { TMainFormMenu }
 
@@ -208,7 +209,7 @@ end;
 
 procedure TMainFormMenu.ApplyTheme;
 var
-  i, j: Integer;
+  i, j, h: Integer;
 begin
   for i := 0 to high(FToolbars) do
   begin
@@ -229,10 +230,36 @@ begin
             TToolbar(Controls[j]).OnPaintButton:= nil;
           end;
         end else
+        if Controls[j] is TBCComboBox then
+        begin
+          BCAssignSystemStyle(TBCComboBox(Controls[j]).Button, FDarkTheme);
+          with TBCComboBox(Controls[j]) do
+          begin
+            h := FToolbars[i].tb.Height;
+            Button.StateNormal.FontEx.Height := (h-4) div 2;
+            Button.StateNormal.FontEx.ShadowColorOpacity:= 96;
+            Button.StateClicked.FontEx.Height := (h-4) div 2;
+            Button.StateClicked.FontEx.ShadowColorOpacity:= 96;
+            Button.StateHover.FontEx.Height := (h-4) div 2;
+            Button.StateHover.FontEx.ShadowColorOpacity:= 96;
+            if FDarkTheme then
+            begin
+              DropDownBorderColor:= clBlack;
+              DropDownFontColor:= clLightText;
+              DropDownColor:= clDarkBtnFace;
+            end else
+            begin
+              DropDownBorderColor := MergeBGRA(ColorToBGRA(clWindowText),ColorToBGRA(clWindow));
+              DropDownFontColor:= clWindowText;
+              DropDownColor:= clWindow;
+            end;
+          end;
+        end else
         if Controls[j] is TBCTrackbarUpdown then
         begin
           if FDarkTheme then
           begin
+            TBCTrackbarUpdown(Controls[j]).Border.Color := clDarkPanelShadow;
             TBCTrackbarUpdown(Controls[j]).Background.Color := clDarkEditableFace;
             TBCTrackbarUpdown(Controls[j]).ButtonBackground.Style:= bbsColor;
             TBCTrackbarUpdown(Controls[j]).ButtonBackground.Color:= $a0a0a0;
@@ -240,6 +267,7 @@ begin
           end
           else
           begin
+            TBCTrackbarUpdown(Controls[j]).Border.Color := MergeBGRA(ColorToBGRA(clWindowText),ColorToBGRA(clBtnFace));
             TBCTrackbarUpdown(Controls[j]).Background.Color := clWindow;
             TBCTrackbarUpdown(Controls[j]).ButtonBackground.Style:= bbsColor;
             TBCTrackbarUpdown(Controls[j]).ButtonBackground.Color:= clBtnFace;