From 577782d54ecc1fbf6d40e310cf5dfb2b7864c760 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Mon, 21 Dec 2020 21:32:47 +0000 Subject: [PATCH] ExCtrls: Fix transparent text background, Fix selected item not shown. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7940 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/exctrls/source/excombo.pas | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/components/exctrls/source/excombo.pas b/components/exctrls/source/excombo.pas index 5971c7b88..a3c1db6f7 100644 --- a/components/exctrls/source/excombo.pas +++ b/components/exctrls/source/excombo.pas @@ -55,6 +55,7 @@ type procedure SetOffsets; procedure SetShowColSeparators(aValue: Boolean); protected + procedure CreateHandle; override; procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy; const AXProportion, AYProportion: Double); override; class function GetControlClassDefaultSize: TSize; override; @@ -178,6 +179,12 @@ begin Result := FColumnMargin <> Scale96ToFont(DEFAULT_COLUMN_MARGIN); end; +procedure TColumnComboBoxEx.CreateHandle; +begin + inherited; + SetOffsets; +end; + procedure TColumnComboBoxEx.DoAutoAdjustLayout( const AMode: TLayoutAdjustmentPolicy; const AXProportion, AYProportion: Double ); @@ -212,14 +219,19 @@ begin FParser.Delimiter := FDelimiter; FParser.DelimitedText := txt; - if (odSelected in State) then + if not(odBackgroundPainted in State) then + Canvas.FillRect(ARect); + +{ if (odSelected in State) then Canvas.Brush.Color := clHighlight else if (Canvas.Brush.Color <> Color) then Canvas.Brush.Color := Color; - Canvas.FillRect(ARect); + Canvas.FillRect(ARect);} y := ARect.Top + (ARect.Height - FTextHeight) shr 1; + Canvas.Brush.Style := bsClear; // transparent text background + if Assigned(FOffsets) then begin for i := 0 to FParser.Count-1 do @@ -375,6 +387,7 @@ var begin if not Assigned(Parent) or (Items.Count = 0) then Exit; + FColumnCount := GetColumnCount; SetLength({%H-}widths, FColumnCount);