From 6474f1bf951ad6417409eab83e24d1895bcd791e Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Fri, 1 Jul 2016 20:24:54 +0000 Subject: [PATCH] tvplanit: Fix minor drawing glitch in WeekView. Some refactoring. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4886 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/tvplanit/source/vpbasepainter.pas | 16 ++++++++++++ .../tvplanit/source/vpweekviewpainter.pas | 26 +++++++++---------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/components/tvplanit/source/vpbasepainter.pas b/components/tvplanit/source/vpbasepainter.pas index 36a0d4b16..376e1fb12 100644 --- a/components/tvplanit/source/vpbasepainter.pas +++ b/components/tvplanit/source/vpbasepainter.pas @@ -34,6 +34,7 @@ type SaveBrushColor: TColor; SavePenStyle: TPenStyle; SavePenColor: TColor; + procedure DrawDotDotDot(ARect: TRect; AColor: TColor); procedure InitPenBrush; virtual; procedure SavePenBrush; virtual; procedure RestorePenBrush; virtual; @@ -57,6 +58,21 @@ begin RenderCanvas := ARenderCanvas; end; +procedure TVpBasePainter.DrawDotDotDot(ARect: TRect; AColor: TColor); +var + R: TRect; +begin + RenderCanvas.Brush.Color := AColor; + { draw dot dot dot } + R := Rect(ARect.Right, ARect.Bottom, ARect.Right + 3, ARect.Bottom + 3); + OffsetRect(R, -20, -7); + TPSFillRect(RenderCanvas, Angle, RenderIn, R); + OffsetRect(R, 7, 0); + TPSFillRect(RenderCanvas, Angle, RenderIn, R); + OffsetRect(R, 7, 0); + TPSFillRect(RenderCanvas, Angle, RenderIn, R); +end; + procedure TVpBasePainter.InitPenBrush; begin RenderCanvas.Pen.Style := psSolid; diff --git a/components/tvplanit/source/vpweekviewpainter.pas b/components/tvplanit/source/vpweekviewpainter.pas index 74f7d3e61..80066dca9 100644 --- a/components/tvplanit/source/vpweekviewpainter.pas +++ b/components/tvplanit/source/vpweekviewpainter.pas @@ -35,6 +35,7 @@ type procedure Clear; function DrawAllDayEvents(ADate: TDateTime; DayRect: TRect; var EAIndex: Integer): Boolean; procedure DrawBorders; + procedure DrawDotDotDot(ARect: TRect; AColor: TColor); procedure DrawFocusRect(ADayIndex: Integer; DayRect: TRect); procedure DrawDay(ADayIndex: Integer; var DayRect: TRect; var EAIndex: Integer); procedure DrawDayHeader(ADayIndex: Integer; var TextRect: TRect); @@ -276,14 +277,18 @@ begin rowHeight := TVpWeekViewOpener(FWeekView).wvRowHeight; headerHeight := TVpWeekViewOpener(FWeekView).wvHeaderHeight; - { draw day head} - RenderCanvas.Font.Assign(FWeekView.DayHeadAttributes.Font); - RenderCanvas.Brush.Color := RealDayHeadAttrColor; + // Get header rectangle TextRect := DayRect; TextRect.Bottom := DayRect.Top + dayHeadHeight; - TPSFillRect(RenderCanvas, Angle, RenderIn, TextRect); + + { draw day header } + tmpRect := TextRect; + inc(tmpRect.Right); + RenderCanvas.Font.Assign(FWeekView.DayHeadAttributes.Font); + RenderCanvas.Brush.Color := RealDayHeadAttrColor; + TPSFillRect(RenderCanvas, Angle, RenderIn, tmpRect); if FWeekView.DayHeadAttributes.Bordered then - TPSRectangle(RenderCanvas, Angle, RenderIn, TextRect); + TPSRectangle(RenderCanvas, Angle, RenderIn, tmpRect); { Fix Header String } DrawDayHeader(ADayIndex, TextRect); @@ -327,15 +332,8 @@ begin { dot dot dot to indicate there are more events than can be drawn } { in the available space } if TextRect.Bottom - TextMargin > DayRect.Bottom then begin - RenderCanvas.Brush.Color := DotDotDotColor; - { draw dot dot dot } - tmpRect := Rect(DayRect.Right, DayRect.Bottom, DayRect.Right + 3, DayRect.Bottom + 3); - OffsetRect(tmpRect, -20, -7); - TPSFillRect(RenderCanvas, Angle, RenderIn, tmpRect); - OffsetRect(tmpRect, 7, 0); - TPSFillRect(RenderCanvas, Angle, RenderIn, tmpRect); - OffsetRect(tmpRect, 7, 0); - TPSFillRect(RenderCanvas, Angle, RenderIn, tmpRect); + { Draw ". . ." } + DrawDotDotDot(RenderCanvas, DayRect, DotDotDotColor); break; end;