diff --git a/components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpi b/components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpi index a5f6fd435..638a245fa 100644 --- a/components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpi +++ b/components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpi @@ -24,7 +24,6 @@ - @@ -61,6 +60,7 @@ + diff --git a/components/jvcllaz/examples/JvTabBar_NotebookPages/JvTabBarDemo_NotebookPages.lpi b/components/jvcllaz/examples/JvTabBar_NotebookPages/JvTabBarDemo_NotebookPages.lpi index e144a023f..3f43c6ed5 100644 --- a/components/jvcllaz/examples/JvTabBar_NotebookPages/JvTabBarDemo_NotebookPages.lpi +++ b/components/jvcllaz/examples/JvTabBar_NotebookPages/JvTabBarDemo_NotebookPages.lpi @@ -63,6 +63,9 @@ + + + diff --git a/components/jvcllaz/examples/JvTabBar_NotebookPages/main.lfm b/components/jvcllaz/examples/JvTabBar_NotebookPages/main.lfm index c0f80a475..5b83ccab8 100644 --- a/components/jvcllaz/examples/JvTabBar_NotebookPages/main.lfm +++ b/components/jvcllaz/examples/JvTabBar_NotebookPages/main.lfm @@ -6,8 +6,8 @@ object Form1: TForm1 Caption = 'JvTabBar demo (with TJvNotebookPageList)' ClientHeight = 438 ClientWidth = 669 + LCLVersion = '4.99.0.0' OnCreate = FormCreate - LCLVersion = '2.1.0.0' object JvTabBar1: TJvTabBar Left = 0 Height = 30 @@ -50,6 +50,7 @@ object Form1: TForm1 Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqCleartype + Font.Style = [fsBold] ParentColor = False ParentFont = False TabOrder = 0 @@ -486,34 +487,33 @@ object Form1: TForm1 'PasSynEdit' ) VisibleSpecialChars = [vscSpace, vscTabAtLast] - SelectedColor.BackPriority = 50 SelectedColor.ForePriority = 50 + SelectedColor.BackPriority = 50 SelectedColor.FramePriority = 50 - SelectedColor.BoldPriority = 50 - SelectedColor.ItalicPriority = 50 - SelectedColor.UnderlinePriority = 50 - SelectedColor.StrikeOutPriority = 50 + SelectedColor.Features = [lafPastEOL] BracketHighlightStyle = sbhsBoth - BracketMatchColor.Background = clNone BracketMatchColor.Foreground = clNone + BracketMatchColor.Background = clNone BracketMatchColor.Style = [fsBold] - FoldedCodeColor.Background = clNone FoldedCodeColor.Foreground = clGray + FoldedCodeColor.Background = clNone FoldedCodeColor.FrameColor = clGray - MouseLinkColor.Background = clNone MouseLinkColor.Foreground = clBlue - LineHighlightColor.Background = clNone + MouseLinkColor.Background = clNone LineHighlightColor.Foreground = clNone + LineHighlightColor.Background = clNone inline SynLeftGutterPartList1: TSynGutterPartList object SynGutterMarks1: TSynGutterMarks Width = 24 MouseActions = <> + MaxExtraMarksColums = 0 + Options = [sgmoDeDuplicateMarksOnOverflow] end object SynGutterLineNumber1: TSynGutterLineNumber Width = 15 MouseActions = <> - MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone + MarkupInfo.Background = clBtnFace DigitCount = 2 ShowOnlyLineNumbersMultiplesOf = 1 ZeroStart = False @@ -528,14 +528,14 @@ object Form1: TForm1 object SynGutterSeparator1: TSynGutterSeparator Width = 2 MouseActions = <> - MarkupInfo.Background = clWhite MarkupInfo.Foreground = clGray + MarkupInfo.Background = clWhite end object SynGutterCodeFolding1: TSynGutterCodeFolding AutoSize = False MouseActions = <> - MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray + MarkupInfo.Background = clNone MouseActionsExpanded = <> MouseActionsCollapsed = <> end @@ -554,6 +554,7 @@ object Form1: TForm1 Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqCleartype + Font.Style = [fsBold] ParentColor = False ParentFont = False TabOrder = 0 @@ -990,34 +991,33 @@ object Form1: TForm1 'XMLSynEdit' ) VisibleSpecialChars = [vscSpace, vscTabAtLast] - SelectedColor.BackPriority = 50 SelectedColor.ForePriority = 50 + SelectedColor.BackPriority = 50 SelectedColor.FramePriority = 50 - SelectedColor.BoldPriority = 50 - SelectedColor.ItalicPriority = 50 - SelectedColor.UnderlinePriority = 50 - SelectedColor.StrikeOutPriority = 50 + SelectedColor.Features = [lafPastEOL] BracketHighlightStyle = sbhsBoth - BracketMatchColor.Background = clNone BracketMatchColor.Foreground = clNone + BracketMatchColor.Background = clNone BracketMatchColor.Style = [fsBold] - FoldedCodeColor.Background = clNone FoldedCodeColor.Foreground = clGray + FoldedCodeColor.Background = clNone FoldedCodeColor.FrameColor = clGray - MouseLinkColor.Background = clNone MouseLinkColor.Foreground = clBlue - LineHighlightColor.Background = clNone + MouseLinkColor.Background = clNone LineHighlightColor.Foreground = clNone + LineHighlightColor.Background = clNone inline SynLeftGutterPartList1: TSynGutterPartList object SynGutterMarks1: TSynGutterMarks Width = 24 MouseActions = <> + MaxExtraMarksColums = 0 + Options = [sgmoDeDuplicateMarksOnOverflow] end object SynGutterLineNumber1: TSynGutterLineNumber Width = 15 MouseActions = <> - MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone + MarkupInfo.Background = clBtnFace DigitCount = 2 ShowOnlyLineNumbersMultiplesOf = 1 ZeroStart = False @@ -1032,14 +1032,14 @@ object Form1: TForm1 object SynGutterSeparator1: TSynGutterSeparator Width = 2 MouseActions = <> - MarkupInfo.Background = clWhite MarkupInfo.Foreground = clGray + MarkupInfo.Background = clWhite end object SynGutterCodeFolding1: TSynGutterCodeFolding AutoSize = False MouseActions = <> - MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray + MarkupInfo.Background = clNone MouseActionsExpanded = <> MouseActionsCollapsed = <> end @@ -1063,9 +1063,11 @@ object Form1: TForm1 DirectiveAttri.Foreground = clRed DirectiveAttri.Style = [fsBold] CompilerMode = pcmDelphi - NestedComments = False - left = 157 - top = 111 + ModeSwitches = [pcsTypeHelpers] + StringMultilineMode = [] + NestedBracketAttribs = <> + Left = 157 + Top = 111 end object JvModernTabBarPainter1: TJvModernTabBarPainter Color = clGradientInactiveCaption @@ -1076,22 +1078,22 @@ object Form1: TForm1 DisabledFont.Color = clGrayText SelectedFont.Color = clWindowText SelectedFont.Style = [fsBold] - left = 155 - top = 209 + Left = 155 + Top = 209 end object JvTabBarXPPainter1: TJvTabBarXPPainter Font.Color = clWindowText DisabledFont.Color = clGrayText SelectedFont.Color = clWindowText FixedTabSize = 0 - left = 312 - top = 209 + Left = 312 + Top = 209 end object SynXMLSyn1: TSynXMLSyn DefaultFilter = 'XML Document (*.xml,*.xsd,*.xsl,*.xslt,*.dtd)|*.xml;*.xsd;*.xsl;*.xslt;*.dtd' Enabled = False WantBracesParsed = False - left = 241 - top = 111 + Left = 241 + Top = 111 end end diff --git a/components/jvcllaz/examples/JvTabBar_NotebookPages/main.pas b/components/jvcllaz/examples/JvTabBar_NotebookPages/main.pas index 9bbfc748b..3a34e5e9b 100644 --- a/components/jvcllaz/examples/JvTabBar_NotebookPages/main.pas +++ b/components/jvcllaz/examples/JvTabBar_NotebookPages/main.pas @@ -54,6 +54,8 @@ begin {$IF LCL_FullVersion >= 2010000} JvTabBar1.PageListTabLink := true; {$IFEND} + JvTabBar1.TabShape := tsRounded; + dir := ExpandFileName(Application.Location + '../../examples/JvTabBar_NotebookPages/'); PasSynEdit.Lines.LoadfromFile(dir + 'main.pas'); XMLSynEdit.Lines.LoadFromFile(dir + 'JvTabBarDemo_NotebookPages.lpi'); diff --git a/components/jvcllaz/examples/JvTabBar_PageList/main.lfm b/components/jvcllaz/examples/JvTabBar_PageList/main.lfm index 8ee34aab0..039eb0052 100644 --- a/components/jvcllaz/examples/JvTabBar_PageList/main.lfm +++ b/components/jvcllaz/examples/JvTabBar_PageList/main.lfm @@ -1,7 +1,7 @@ object MainForm: TMainForm - Left = 683 + Left = 690 Height = 497 - Top = 173 + Top = 208 Width = 734 Caption = 'JvTabBar Demo' ClientHeight = 497 @@ -41,7 +41,7 @@ object MainForm: TMainForm end object JvPageList: TJvPageList Left = 0 - Height = 382 + Height = 362 Top = 40 Width = 734 ActivePage = JvStandardPage1 @@ -49,13 +49,13 @@ object MainForm: TMainForm Align = alClient object JvStandardPage1: TJvStandardPage Left = 0 - Height = 382 + Height = 362 Top = 0 Width = 734 Caption = 'Memo' object Memo1: TMemo Left = 8 - Height = 366 + Height = 346 Top = 8 Width = 718 Align = alClient @@ -649,13 +649,13 @@ object MainForm: TMainForm end object Panel1: TPanel Left = 0 - Height = 75 - Top = 422 + Height = 95 + Top = 402 Width = 734 Align = alBottom AutoSize = True BevelOuter = bvLowered - ClientHeight = 75 + ClientHeight = 95 ClientWidth = 734 TabOrder = 2 object lblPainter: TLabel @@ -771,7 +771,7 @@ object MainForm: TMainForm AnchorSideTop.Side = asrCenter Left = 207 Height = 15 - Top = 40 + Top = 67 Width = 68 BorderSpacing.Left = 24 Caption = 'Scroll Layout' @@ -779,13 +779,14 @@ object MainForm: TMainForm end object cmbScrollLayout: TComboBox AnchorSideLeft.Control = cmbOrientation - AnchorSideTop.Control = cmbOrientation + AnchorSideTop.Control = cmbTabShape AnchorSideTop.Side = asrBottom Left = 283 Height = 23 - Top = 36 + Top = 63 Width = 100 BorderSpacing.Top = 4 + BorderSpacing.Bottom = 8 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( @@ -842,6 +843,40 @@ object MainForm: TMainForm TabOrder = 8 OnClick = bttnAddTabClick end + object lblTabShape: TLabel + AnchorSideLeft.Control = cmbPainter + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = cmbTabShape + AnchorSideTop.Side = asrCenter + Left = 207 + Height = 15 + Top = 40 + Width = 53 + BorderSpacing.Left = 24 + Caption = 'Tab shape' + ParentColor = False + end + object cmbTabShape: TComboBox + AnchorSideLeft.Control = cmbOrientation + AnchorSideTop.Control = cmbOrientation + AnchorSideTop.Side = asrBottom + Left = 283 + Height = 23 + Top = 36 + Width = 100 + BorderSpacing.Top = 4 + ItemHeight = 15 + ItemIndex = 0 + Items.Strings = ( + 'rectangular' + 'rounded' + 'cut' + ) + Style = csDropDownList + TabOrder = 9 + Text = 'rectangular' + OnChange = cmbTabShapeChange + end end object JvModernTabBarPainter: TJvModernTabBarPainter HotTrackColor = clSkyBlue diff --git a/components/jvcllaz/examples/JvTabBar_PageList/main.pas b/components/jvcllaz/examples/JvTabBar_PageList/main.pas index da5bc81b8..9e3a7a76f 100644 --- a/components/jvcllaz/examples/JvTabBar_PageList/main.pas +++ b/components/jvcllaz/examples/JvTabBar_PageList/main.pas @@ -23,6 +23,7 @@ type cmbScrollLayout: TComboBox; cmbPainter: TComboBox; cmbOrientation: TComboBox; + cmbTabShape: TComboBox; Image1: TImage; ImageList1: TImageList; JvModernTabBarPainter: TJvModernTabBarPainter; @@ -36,6 +37,7 @@ type lblScrollLayout: TLabel; lblPainter: TLabel; lblOrientation: TLabel; + lblTabShape: TLabel; Memo1: TMemo; Panel1: TPanel; ShellListView1: TShellListView; @@ -51,6 +53,7 @@ type procedure cmbScrollLayoutChange(Sender: TObject); procedure cmbPainterChange(Sender: TObject); procedure cmbOrientationChange(Sender: TObject); + procedure cmbTabShapeChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure JvTabBarTabCloseQuery(Sender: TObject; Item: TJvTabBarItem; var CanClose: Boolean); @@ -151,6 +154,11 @@ begin end; end; +procedure TMainForm.cmbTabShapeChange(Sender: TObject); +begin + JvTabBar.TabShape := TJvTabShape(cmbTabShape.ItemIndex); +end; + procedure TMainForm.FormCreate(Sender: TObject); begin counter := 0; diff --git a/components/jvcllaz/run/JvPageComps/jvtabbar.pas b/components/jvcllaz/run/JvPageComps/jvtabbar.pas index a9532f181..eeaf714fe 100644 --- a/components/jvcllaz/run/JvPageComps/jvtabbar.pas +++ b/components/jvcllaz/run/JvPageComps/jvtabbar.pas @@ -42,7 +42,9 @@ type TJvTabBarOrientation = (toTop, toBottom); TJvTabBarScrollButtonKind = (sbScrollLeft, sbScrollRight); + TJvTabBarScrollButtonLayout = (sblTop, sblBottom, sblSides); TJvTabBarScrollButtonState = (sbsHidden, sbsNormal, sbsHot, sbsPressed, sbsDisabled); + TJvTabShape = (tsRectangular, tsRounded, tsCut); TJvGetModifiedEvent = procedure(Sender: TJvTabBarItem; var Modified: Boolean) of object; TJvGetEnabledEvent = procedure(Sender: TJvTabBarItem; var Enabled: Boolean) of object; @@ -172,7 +174,7 @@ type DEFAULT_CLOSE_CROSS_COLOR_SELECTED = clBlack; DEFAULT_CLOSE_RECT_COLOR = $868686; DEFAULT_CLOSE_RECT_COLOR_DISABLED = $D6D6D6; - DEFAULT_CONTROL_DIVIDE_COLOR = clBlack; + DEFAULT_CONTROL_DIVIDE_COLOR = clMedGray; DEFAULT_DIVIDER_COLOR = $99A8AC; DEFAULT_HOTTRACK_COLOR = $99A8AC; DEFAULT_MODIFIED_CROSS_COLOR = clRed; @@ -227,6 +229,9 @@ type procedure DrawBackground(Canvas: TCanvas; TabBar: TJvCustomTabBar; R: TRect); override; procedure DrawDivider(Canvas: TCanvas; LeftTab: TJvTabBarItem; R: TRect); override; procedure DrawMoveDivider(Canvas: TCanvas; Tab: TJvTabBarItem; MoveLeft: Boolean); override; + procedure DrawCutTab(Canvas: TCanvas; ATabRect: TRect; AFillColor, ABorderColor: TColor; AOrientation: TJvTabBarOrientation); virtual; + procedure DrawRectTab(Canvas: TCanvas; ATabRect: TRect; AFillColor, ABorderColor: TColor; AOrientation: TJvTabBarOrientation); virtual; + procedure DrawRoundedTab(Canvas: TCanvas; ATabRect: TRect; AFillColor, ABorderColor: TColor; AOrientation: TJvTabBarOrientation); virtual; procedure DrawScrollBarGlyph(ACanvas: TCanvas; TabBar: TJvCustomTabBar; X, Y: Integer; ALeft, Disabled, Hot: Boolean); override; procedure DrawTab(Canvas: TCanvas; Tab: TJvTabBarItem; ATabRect: TRect); override; @@ -275,8 +280,6 @@ type ExState: Boolean; end; - TJvTabBarScrollButtonLayout = (sblTop, sblBottom, sblSides); - TJvCustomTabBar = class(TCustomControl) private FTabs: TJvTabBarItems; @@ -299,6 +302,7 @@ type FSelectBeforeClose: Boolean; FPageList: TCustomControl; FHintLocked: Integer; + FTabShape: TJvTabShape; FOnTabClosing: TJvTabBarClosingEvent; FOnTabSelected: TJvTabBarItemEvent; @@ -316,7 +320,6 @@ type FBtnLeftScroll: TJvTabBarScrollButtonInfo; FBtnRightScroll: TJvTabBarScrollButtonInfo; FScrollButtonLayout: TJvTabBarScrollButtonLayout; -// FScrollButtonBackground: TBitmap; FHint: TCaption; FFlatScrollButtons: Boolean; FRoundedScrollButtons: Boolean; @@ -344,6 +347,7 @@ type function FindSelectableTab(Tab: TJvTabBarItem): TJvTabBarItem; procedure SetFlatScrollButtons(const Value: Boolean); procedure SetRoundedScrollButtons(const Value: Boolean); + procedure SetTabShape(const Value: TJvTabShape); procedure SetScrollButtonLayout(const Value: TJvTabBarScrollButtonLayout); procedure SetPageList(const Value: TCustomControl); procedure SetOrientation(const Value: TJvTabBarOrientation); @@ -448,6 +452,7 @@ type property FlatScrollButtons: Boolean read FFlatScrollButtons write SetFlatScrollButtons default True; property RoundedScrollButtons: Boolean read FRoundedScrollButtons write SetRoundedScrollButtons default False; property ScrollButtonLayout: TJvTabBarScrollButtonLayout read FScrollButtonLayout write SetScrollButtonLayout default sblTop; + property TabShape: TJvTabShape read FTabShape write SetTabShape default tsRectangular; property Height read GetHeight write SetHeight; property Hint: TCaption read FHint write SetHint; property AllowTabMoving: Boolean read FAllowTabMoving write FAllowTabMoving default False; @@ -493,6 +498,7 @@ type property FlatScrollButtons; property RoundedScrollButtons; property ScrollButtonLayout; + property TabShape; property AllowTabMoving; property PageListTabLink; @@ -1528,7 +1534,7 @@ begin begin Inc(Offset, X); // this tab is placed too left. X := 0; - Tab.FLeft := -Offset - 10; + Tab.FLeft := -Offset - Scale96ToFont(10); end; Inc(Index); end @@ -1908,6 +1914,15 @@ begin end; end; +procedure TJvCustomTabBar.SetTabShape(const Value: TJvTabShape); +begin + if Value <> FTabShape then + begin + FTabShape := Value; + Invalidate; + end; +end; + procedure TJvCustomTabBar.SetScrollButtonLayout(const Value: TJvTabBarScrollButtonLayout); begin if Value <> FScrollButtonLayout then @@ -2642,6 +2657,123 @@ begin end; end; +procedure TJvModernTabBarPainter.DrawCutTab(Canvas: TCanvas; ATabRect: TRect; + AFillColor, ABorderColor: TColor; AOrientation: TJvTabBarOrientation); +var + P: array[0..7] of TPoint; + delta: Integer; +begin + delta := ATabRect.Height div 4; + if AOrientation = toTop then + begin + P[0] := Point(ATabRect.Left - delta, ATabRect.Bottom); + P[1] := Point(ATabRect.Left, ATabRect.Bottom - delta); + P[2] := Point(ATabRect.Left, ATabRect.Top + delta); + P[3] := Point(ATabRect.Left + delta, ATabRect.Top); + P[4] := Point(ATabRect.Right - delta, ATabRect.Top); + P[5] := Point(ATabRect.Right, ATabRect.Top + delta); + P[6] := Point(ATabRect.Right, ATabRect.Bottom - delta); + P[7] := Point(ATabRect.Right + delta, ATabRect.Bottom); + end else + begin + P[0] := Point(ATabRect.Left - delta, ATabRect.Top); + P[1] := Point(ATabRect.Left, ATabRect.Top + delta); + P[2] := Point(ATabRect.Left, ATabRect.Bottom - delta); + P[3] := Point(ATabRect.Left + delta , ATabRect.Bottom); + P[4] := Point(ATabRect.Right - delta, ATabRect.Bottom); + P[5] := Point(ATabRect.Right, ATabRect.Bottom - delta); + P[6] := Point(ATabRect.Right, ATabRect.Top + delta); + P[7] := Point(ATabRect.Right + delta, ATabRect.Top); + end; + with Canvas do + begin + Brush.Style := bsSolid; + Brush.Color := AFillColor; + Pen.Style := psClear; + Polygon(P); + Pen.Style := psSolid; + Pen.Color := ABorderColor; + Pen.Width := 1; + PolyLine(P); + end; +end; + +procedure TJvModernTabBarPainter.DrawRectTab(Canvas: TCanvas; ATabRect: TRect; + AFillColor, ABorderColor: TColor; AOrientation: TJvTabBarOrientation); +begin + with Canvas do + begin + Brush.Style := bsSolid; + Brush.Color := AFillColor; + FillRect(ATabRect); + + Pen.Color := ABorderColor; + if AOrientation = toBottom then + begin + MoveTo(ATabRect.Left, ATabRect.Top); + LineTo(ATabRect.Left, ATabRect.Bottom - 1); + LineTo(ATabRect.Right - 1, ATabRect.Bottom - 1); + LineTo(ATabRect.Right - 1, ATabRect.Top - 1{end}); + end + else // toTop + begin + MoveTo(ATabRect.Left, ATabRect.Bottom - 1); + LineTo(ATabRect.Left, ATabRect.Top); + LineTo(ATabRect.Right - 1, ATabRect.Top); + LineTo(ATabRect.Right - 1, ATabRect.Bottom - 1 + 1{end}); + end; + end; +end; + +procedure TJvModernTabBarPainter.DrawRoundedTab(Canvas: TCanvas; ATabRect: TRect; + AFillColor, ABorderColor: TColor; AOrientation: TJvTabBarOrientation); +const + POINTS_PER_ARC = 9; +var + P: array[0..4 * POINTS_PER_ARC - 1] of TPoint; + R: Integer; + + procedure CalcArcPoints(Center: TPoint; FirstIndex, StartAngle, EndAngle, Radius: Integer); + var + i: Integer; + angle, deltaAngle: Double; + begin + deltaAngle := (EndAngle - StartAngle) / POINTS_PER_ARC; + for i := 0 to POINTS_PER_ARC-1 do + begin + angle := -(StartAngle + i * deltaAngle)/180 * pi; + P[FirstIndex + i].X := Center.X + round(cos(Angle) * Radius); + P[FirstIndex + i].Y := Center.Y + round(sin(Angle) * Radius); + end; + end; + +begin + R := ATabRect.Height div 3; + if AOrientation = toTop then + begin + CalcArcPoints(Point(ATabRect.Left - R, ATabRect.Bottom - R), 0, 270, 360, R); + CalcArcPoints(Point(ATabRect.Left + R, ATabRect.Top + R), POINTS_PER_ARC, 180, 90, R); + CalcArcPoints(Point(ATabRect.Right - R, ATabRect.Top + R), 2*POINTS_PER_ARC, 90, 0, R); + CalcArcPoints(Point(ATabRect.Right + R, ATabRect.Bottom - R), 3*POINTS_PER_ARC, 180, 270, R); + end else + begin + CalcArcPoints(Point(ATabRect.Left - R, ATabRect.Top + R), 0, 90, 0, R); + CalcArcPoints(Point(ATabRect.Left + R, ATabRect.Bottom - R), POINTS_PER_ARC, 180, 270, R); + CalcArcPoints(Point(ATabRect.Right - R, ATabRect.Bottom - R), 2*POINTS_PER_ARC, 270, 360, R); + CalcArcPoints(Point(ATabRect.Right + R, ATabRect.Top + R), 3*POINTS_PER_ARC, 180, 90, R); + end; + + with Canvas do begin + Brush.Style := bsSolid; + Brush.Color := AFillColor; + Pen.Style := psClear; + Polygon(P); + Pen.Style := psSolid; + Pen.Width := 1; + Pen.Color := ABorderColor; + PolyLine(P); + end; +end; procedure TJvModernTabBarPainter.DrawTab(Canvas: TCanvas; Tab: TJvTabBarItem; ATabRect: TRect); @@ -2670,24 +2802,13 @@ begin if Tab.Selected then begin - Brush.Style := bsSolid; - Brush.Color := TabColor; - FillRect(R); - - Pen.Color := ControlDivideColor; - if Tab.TabBar.Orientation = toBottom then - begin - MoveTo(R.Left, R.Top); - LineTo(R.Left, R.Bottom - 1); - LineTo(R.Right - 1, R.Bottom - 1); - LineTo(R.Right - 1, R.Top - 1{end}); - end - else // toTop - begin - MoveTo(R.Left, R.Bottom - 1); - LineTo(R.Left, R.Top); - LineTo(R.Right - 1, R.Top); - LineTo(R.Right - 1, R.Bottom - 1 + 1{end}); + case Tab.TabBar.TabShape of + tsRectangular: + DrawRectTab(Canvas, ATabRect, TabColor, ControLDivideColor, Tab.TabBar.Orientation); + tsRounded: + DrawRoundedTab(Canvas, ATabRect, TabColor, ControlDivideColor, Tab.TabBar.Orientation); + tsCut: + DrawCutTab(Canvas, ATabRect, TabColor, ControlDivideColor, Tab.TabBar.Orientation); end; end;