You've already forked lazarus-ccr
tvplanit: Fix some painting glitches in DayView.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4877 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -427,6 +427,8 @@ begin
|
|||||||
if StartLine < 0 then
|
if StartLine < 0 then
|
||||||
StartLine := FDayView.TopLine;
|
StartLine := FDayView.TopLine;
|
||||||
|
|
||||||
|
dec(R.Top);
|
||||||
|
|
||||||
{ Set GutterRect size }
|
{ Set GutterRect size }
|
||||||
GutterRect.Left := R.Left;
|
GutterRect.Left := R.Left;
|
||||||
GutterRect.Top := R.Top;
|
GutterRect.Top := R.Top;
|
||||||
@ -443,7 +445,7 @@ begin
|
|||||||
TPSMoveTo(RenderCanvas, Angle, RenderIn, GutterRect.Right, GutterRect.Top);
|
TPSMoveTo(RenderCanvas, Angle, RenderIn, GutterRect.Right, GutterRect.Top);
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, GutterRect.Right, GutterRect.Bottom);
|
TPSLineTo(RenderCanvas, Angle, RenderIn, GutterRect.Right, GutterRect.Bottom);
|
||||||
|
|
||||||
for I := 0 to FDayView.LineCount - 1 do begin // wp: was withoug -1
|
for I := 0 to FDayView.LineCount - 1 do begin // wp: was without -1
|
||||||
with TVpDayViewOpener(FDayView) do begin
|
with TVpDayViewOpener(FDayView) do begin
|
||||||
dvLineMatrix[Col, I].Rec.Left := -1;
|
dvLineMatrix[Col, I].Rec.Left := -1;
|
||||||
dvLineMatrix[Col, I].Rec.Top := -1;
|
dvLineMatrix[Col, I].Rec.Top := -1;
|
||||||
@ -575,15 +577,20 @@ var
|
|||||||
StrHt: Integer;
|
StrHt: Integer;
|
||||||
TextRect: TRect;
|
TextRect: TRect;
|
||||||
X, Y: Integer;
|
X, Y: Integer;
|
||||||
|
tmpRect: TRect;
|
||||||
begin
|
begin
|
||||||
SaveFont := TFont.Create;
|
SaveFont := TFont.Create;
|
||||||
try
|
try
|
||||||
SaveFont.Assign(RenderCanvas.Font);
|
SaveFont.Assign(RenderCanvas.Font);
|
||||||
|
|
||||||
{ Draw Column Header }
|
{ Draw Column Header }
|
||||||
RenderCanvas.Font.Assign(FDayView.HeadAttributes.Font);
|
RenderCanvas.Font.Assign(FDayView.HeadAttributes.Font);
|
||||||
RenderCanvas.Brush.Color := RealHeadAttrColor;
|
RenderCanvas.Brush.Color := RealHeadAttrColor;
|
||||||
RenderCanvas.Pen.Style := psClear;
|
RenderCanvas.Pen.Style := psClear;
|
||||||
TPSRectangle(RenderCanvas, Angle, RenderIn, R);
|
tmpRect := R;
|
||||||
|
InflateRect(tmpRect, 1, 1);
|
||||||
|
inc(tmpRect.Left);
|
||||||
|
TPSRectangle(RenderCanvas, Angle, RenderIn, tmpRect);
|
||||||
RenderCanvas.Pen.Style := psSolid;
|
RenderCanvas.Pen.Style := psSolid;
|
||||||
|
|
||||||
{ Size text rect }
|
{ Size text rect }
|
||||||
@ -617,39 +624,36 @@ begin
|
|||||||
Y := TextRect.Top + TextMargin;
|
Y := TextRect.Top + TextMargin;
|
||||||
TPSTextOut(RenderCanvas, Angle, RenderIn, X, Y, FDayView.DataStore.Resource.Description);
|
TPSTextOut(RenderCanvas, Angle, RenderIn, X, Y, FDayView.DataStore.Resource.Description);
|
||||||
end;
|
end;
|
||||||
{ center and write the date string }
|
{ center the date string }
|
||||||
X := TextRect.Left + (TextRect.Right - TextRect.Left) div 2 - DateStrLen div 2;
|
X := TextRect.Left + (TextRect.Right - TextRect.Left) div 2 - DateStrLen div 2;
|
||||||
Y := TextRect.Top + (TextMargin * 2) + StrHt;
|
Y := TextRect.Top + (TextMargin * 2) + StrHt;
|
||||||
TPSTextOut(RenderCanvas, Angle, RenderIn, X, Y, DateStr);
|
|
||||||
end else begin
|
end else begin
|
||||||
{ center and write the date string }
|
{ center the date string }
|
||||||
Y := TextRect.Top + TextMargin;
|
Y := TextRect.Top + TextMargin;
|
||||||
X := TextRect.Left + (TextRect.Right - TextRect.Left) div 2 - DateStrLen div 2;
|
X := TextRect.Left + (TextRect.Right - TextRect.Left) div 2 - DateStrLen div 2;
|
||||||
TPSTextOut(RenderCanvas, Angle, RenderIn, X, Y, DateStr);
|
|
||||||
end;
|
end;
|
||||||
|
{ Write the date string }
|
||||||
|
TPSTextOut(RenderCanvas, Angle, RenderIn, X, Y, DateStr);
|
||||||
|
|
||||||
{Draw Column Head Borders }
|
{Draw Column Head Borders }
|
||||||
if FDayView.DrawingStyle = dsFlat then begin
|
if FDayView.DrawingStyle = dsFlat then begin
|
||||||
|
// bottom
|
||||||
RenderCanvas.Pen.Color := BevelShadow;
|
RenderCanvas.Pen.Color := BevelShadow;
|
||||||
{bottom}
|
|
||||||
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right, R.Bottom);
|
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right, R.Bottom);
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Left - 1, R.Bottom);
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Left - 1, R.Bottom);
|
||||||
{right side}
|
// right side
|
||||||
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right, R.Bottom - 4);
|
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right, R.Bottom);
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right, R.Top + 3);
|
RenderCanvas.Pen.Color := RealHeadAttrColor;
|
||||||
RenderCanvas.Pen.Color := BevelHighlight;
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right, R.Bottom - 4);
|
||||||
{left side}
|
RenderCanvas.Pen.Color := BevelShadow;
|
||||||
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Left, R.Bottom - 4);
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right, R.Top + 2);
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Left, R.Top + 3);
|
RenderCanvas.Pen.Color := RealHeadAttrColor;
|
||||||
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right, R.Top);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if FDayView.DrawingStyle = ds3d then begin
|
if FDayView.DrawingStyle = ds3d then begin
|
||||||
DrawBevelRect(
|
R := TPSRotateRectangle(Angle, RenderIn, R);
|
||||||
RenderCanvas,
|
DrawBevelRect(RenderCanvas, R, BevelHighlight, BevelDarkShadow);
|
||||||
TPSRotateRectangle(Angle, RenderIn, Rect (R.Left, R.Top, R.Right, R.Bottom)),
|
|
||||||
BevelHighlight,
|
|
||||||
BevelDarkShadow
|
|
||||||
);
|
|
||||||
end;
|
end;
|
||||||
RenderCanvas.Font.Assign(SaveFont);
|
RenderCanvas.Font.Assign(SaveFont);
|
||||||
finally
|
finally
|
||||||
@ -1117,28 +1121,26 @@ begin
|
|||||||
RenderCanvas.Brush.Color := RealHeadAttrColor;
|
RenderCanvas.Brush.Color := RealHeadAttrColor;
|
||||||
TPSFillRect(RenderCanvas, Angle, RenderIn, R);
|
TPSFillRect(RenderCanvas, Angle, RenderIn, R);
|
||||||
|
|
||||||
if FDayView.DrawingStyle = ds3d then
|
if FDayView.DrawingStyle = ds3d then begin
|
||||||
|
R := Rect(R.Left + 1, R.Top + 2, R.Right - 2, R.Bottom - 2);
|
||||||
DrawBevelRect(
|
DrawBevelRect(
|
||||||
RenderCanvas,
|
RenderCanvas,
|
||||||
TPSRotateRectangle(Angle, RenderIn, Rect(
|
TPSRotateRectangle(Angle, RenderIn, R),
|
||||||
R.Left + 1,
|
|
||||||
R.Top + 2,
|
|
||||||
R.Right - 2,
|
|
||||||
R.Bottom - 2
|
|
||||||
)),
|
|
||||||
BevelHighlight,
|
BevelHighlight,
|
||||||
BevelShadow
|
BevelShadow
|
||||||
)
|
)
|
||||||
else begin
|
end else
|
||||||
|
begin
|
||||||
RenderCanvas.Pen.Color := BevelShadow;
|
RenderCanvas.Pen.Color := BevelShadow;
|
||||||
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right - 2, R.Bottom - 2);
|
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right - 6, R.Bottom - 2);
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Left, R.Bottom - 2);
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Left + 3, R.Bottom - 2);
|
||||||
|
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right - 2, R.Top + 6);
|
||||||
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right - 2, R.Bottom - 5);
|
||||||
|
{
|
||||||
RenderCanvas.Pen.Color := BevelHighlight;
|
RenderCanvas.Pen.Color := BevelHighlight;
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Left, R.Top);
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Left, R.Top);
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right - 2, R.Top);
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right - 2, R.Top);
|
||||||
RenderCanvas.Pen.Color := BevelShadow;
|
}
|
||||||
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right - 2, R.Top + 6);
|
|
||||||
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right - 2, R.Bottom - 5);
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1171,19 +1173,11 @@ begin
|
|||||||
DrawMe := False
|
DrawMe := False
|
||||||
end;
|
end;
|
||||||
if DrawMe then begin
|
if DrawMe then begin
|
||||||
{ Draw Column Header }
|
{ Calculate Column Header rectangle }
|
||||||
ColHeadRect := Rect(RPos, RealTop + 2, RPos + DayWidth - 1, RealTop + RealColHeadHeight);
|
ColHeadRect := Rect(RPos, RealTop + 2, RPos + DayWidth - 1, RealTop + RealColHeadHeight);
|
||||||
if (i = RealNumDays - 1) and (ExtraSpace > 0) then
|
if (i = RealNumDays - 1) and (ExtraSpace > 0) then
|
||||||
ColHeadRect.Right := ColHeadRect.Right + ExtraSpace;
|
ColHeadRect.Right := ColHeadRect.Right + ExtraSpace;
|
||||||
|
|
||||||
if Assigned(FDayView.OwnerDrawColHeader) then begin
|
|
||||||
Drawn := false;
|
|
||||||
FDayView.OwnerDrawColHeader(self, RenderCanvas, ColHeadRect, Drawn);
|
|
||||||
if not Drawn then
|
|
||||||
DrawColHeader(ColHeadRect, RenderDate + i, RealDay);
|
|
||||||
end else
|
|
||||||
DrawColHeader(ColHeadRect, RenderDate + i, RealDay);
|
|
||||||
|
|
||||||
{ Calculate the column rect for this day }
|
{ Calculate the column rect for this day }
|
||||||
RenderCanvas.Font.Assign(FDayView.Font);
|
RenderCanvas.Font.Assign(FDayView.Font);
|
||||||
CellsRect := Rect(RPos, ADEventsRect.Bottom + 1, RPos + DayWidth, RealBottom - 2);
|
CellsRect := Rect(RPos, ADEventsRect.Bottom + 1, RPos + DayWidth, RealBottom - 2);
|
||||||
@ -1205,6 +1199,15 @@ begin
|
|||||||
{ Draw the regular events }
|
{ Draw the regular events }
|
||||||
DrawEvents(RenderDate + i, RealDay);
|
DrawEvents(RenderDate + i, RealDay);
|
||||||
|
|
||||||
|
{ Draw the column header }
|
||||||
|
if Assigned(FDayView.OwnerDrawColHeader) then begin
|
||||||
|
Drawn := false;
|
||||||
|
FDayView.OwnerDrawColHeader(self, RenderCanvas, ColHeadRect, Drawn);
|
||||||
|
if not Drawn then
|
||||||
|
DrawColHeader(ColHeadRect, RenderDate + i, RealDay);
|
||||||
|
end else
|
||||||
|
DrawColHeader(ColHeadRect, RenderDate + i, RealDay);
|
||||||
|
|
||||||
Inc(RPos, DayWidth);
|
Inc(RPos, DayWidth);
|
||||||
Inc(RealDay);
|
Inc(RealDay);
|
||||||
end;
|
end;
|
||||||
@ -1308,13 +1311,19 @@ begin
|
|||||||
|
|
||||||
{ Draw Row Header Borders }
|
{ Draw Row Header Borders }
|
||||||
if FDayView.DrawingStyle = dsFlat then begin
|
if FDayView.DrawingStyle = dsFlat then begin
|
||||||
|
RenderCanvas.Pen.Color := BevelShadow;
|
||||||
|
TPSMoveTo(RenderCanvas, Angle, RenderIn, R.Right - 1, R.Top);
|
||||||
|
TPSLineTo(RenderCanvas, Angle, RenderIn, R.Right - 1, R.Bottom - 2);
|
||||||
|
{
|
||||||
DrawBevelRect(RenderCanvas, TPSRotateRectangle(Angle, RenderIn,
|
DrawBevelRect(RenderCanvas, TPSRotateRectangle(Angle, RenderIn,
|
||||||
Rect(R.Left - 1, R.Top, R.Right - 1, R.Bottom - 2)),
|
Rect(R.Left - 1, R.Top, R.Right - 1, R.Bottom - 2)),
|
||||||
BevelHighlight,
|
clRed, //BevelHighlight,
|
||||||
BevelShadow
|
clBlue //BevelShadow
|
||||||
);
|
);
|
||||||
|
}
|
||||||
end
|
end
|
||||||
else if FDayView.DrawingStyle = ds3d then begin
|
else
|
||||||
|
if FDayView.DrawingStyle = ds3d then begin
|
||||||
DrawBevelRect(RenderCanvas,
|
DrawBevelRect(RenderCanvas,
|
||||||
TPSRotateRectangle(Angle, RenderIn, Rect(R.Left + 1, R.Top, R.Right - 1, R.Bottom - 3)),
|
TPSRotateRectangle(Angle, RenderIn, Rect(R.Left + 1, R.Top, R.Right - 1, R.Bottom - 3)),
|
||||||
BevelHighlight,
|
BevelHighlight,
|
||||||
@ -1573,10 +1582,8 @@ begin
|
|||||||
{ Draw borders }
|
{ Draw borders }
|
||||||
tmpRect := Rect(RealLeft, RealTop, RealRight-1, RealBottom-1);
|
tmpRect := Rect(RealLeft, RealTop, RealRight-1, RealBottom-1);
|
||||||
if FDayView.DrawingStyle = dsFlat then begin
|
if FDayView.DrawingStyle = dsFlat then begin
|
||||||
{ Draw an outer and inner bevel }
|
{ Draw an outer and inner bevel - NO: no 3d effects in flat style! }
|
||||||
DrawBevelRect(RenderCanvas, TPSRotateRectangle(Angle, RenderIn, tmpRect), BevelShadow, BevelHighlight);
|
DrawBevelRect(RenderCanvas, TPSRotateRectangle(Angle, RenderIn, tmpRect), BevelShadow, BevelShadow);
|
||||||
InflateRect(tmpRect, -1, -1);
|
|
||||||
DrawBevelRect(RenderCanvas, TPSRotateRectangle(Angle, RenderIn, tmpRect), BevelHighlight, BevelShadow);
|
|
||||||
end else
|
end else
|
||||||
if FDayView.DrawingStyle = ds3d then begin
|
if FDayView.DrawingStyle = ds3d then begin
|
||||||
{ Draw a 3d bevel }
|
{ Draw a 3d bevel }
|
||||||
|
Reference in New Issue
Block a user