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
This commit is contained in:
wp_xxyyzz
2016-07-01 20:24:54 +00:00
parent 906c25af77
commit 6474f1bf95
2 changed files with 28 additions and 14 deletions

View File

@ -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;

View File

@ -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;