You've already forked lazarus-ccr
tvplanit/TVpGanttView: Highlight weekends.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8427 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -102,7 +102,7 @@ const
|
|||||||
strFALSE = 'false';
|
strFALSE = 'false';
|
||||||
|
|
||||||
WEEKDAY_COLOR = $FFFFFF;
|
WEEKDAY_COLOR = $FFFFFF;
|
||||||
WEEKEND_COLOR = $C0C0C0;
|
WEEKEND_COLOR = $D0D0D0;
|
||||||
HOLIDAY_COLOR = $8080FF;
|
HOLIDAY_COLOR = $8080FF;
|
||||||
TODAY_COLOR = $FFC0C0;
|
TODAY_COLOR = $FFC0C0;
|
||||||
OFF_COLOR = $E0E0E0;
|
OFF_COLOR = $E0E0E0;
|
||||||
|
@ -102,6 +102,7 @@ type
|
|||||||
|
|
||||||
FColor: TColor;
|
FColor: TColor;
|
||||||
FLineColor: TColor;
|
FLineColor: TColor;
|
||||||
|
FWeekendColor: TColor;
|
||||||
|
|
||||||
FColHeaderAttributes: TVpGanttColHeaderAttributes;
|
FColHeaderAttributes: TVpGanttColHeaderAttributes;
|
||||||
FRowHeaderAttributes: TVpGanttRowHeaderAttributes;
|
FRowHeaderAttributes: TVpGanttRowHeaderAttributes;
|
||||||
@ -141,6 +142,7 @@ type
|
|||||||
procedure SetShowActiveDate(AValue: Boolean);
|
procedure SetShowActiveDate(AValue: Boolean);
|
||||||
procedure SetTextMargin(AValue: Integer);
|
procedure SetTextMargin(AValue: Integer);
|
||||||
procedure SetTopRow(AValue: Integer);
|
procedure SetTopRow(AValue: Integer);
|
||||||
|
procedure SetWeekendColor(AValue: TColor);
|
||||||
|
|
||||||
protected
|
protected
|
||||||
// Needed by the painter
|
// Needed by the painter
|
||||||
@ -258,6 +260,7 @@ type
|
|||||||
property RowHeaderAttributes: TVpGanttRowHeaderAttributes read FRowHeaderAttributes write FRowHeaderAttributes;
|
property RowHeaderAttributes: TVpGanttRowHeaderAttributes read FRowHeaderAttributes write FRowHeaderAttributes;
|
||||||
property ShowActiveDate: Boolean read FShowActiveDate write SetShowActiveDate default true;
|
property ShowActiveDate: Boolean read FShowActiveDate write SetShowActiveDate default true;
|
||||||
property TextMargin: Integer read FTextMargin write SetTextMargin default 2;
|
property TextMargin: Integer read FTextMargin write SetTextMargin default 2;
|
||||||
|
property WeekendColor: TColor read FWeekendColor write SetWeekendColor default WEEKEND_COLOR;
|
||||||
// inherited events
|
// inherited events
|
||||||
property OnClick;
|
property OnClick;
|
||||||
// new events
|
// new events
|
||||||
@ -397,6 +400,7 @@ begin
|
|||||||
|
|
||||||
FColor := DEFAULT_COLOR;
|
FColor := DEFAULT_COLOR;
|
||||||
FLineColor := DEFAULT_LINECOLOR;
|
FLineColor := DEFAULT_LINECOLOR;
|
||||||
|
FWeekendColor := WEEKEND_COLOR;
|
||||||
|
|
||||||
FRowHeaderAttributes := TVpGanttRowHeaderAttributes.Create(self);
|
FRowHeaderAttributes := TVpGanttRowHeaderAttributes.Create(self);
|
||||||
FColHeaderAttributes := TVpGanttColHeaderAttributes.Create(self);
|
FColHeaderAttributes := TVpGanttColHeaderAttributes.Create(self);
|
||||||
@ -1423,6 +1427,15 @@ begin
|
|||||||
SetScrollInfo(Handle, SB_VERT, scrollInfo, True);
|
SetScrollInfo(Handle, SB_VERT, scrollInfo, True);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TVpGanttView.SetWeekendColor(AValue: TColor);
|
||||||
|
begin
|
||||||
|
if FWeekendColor <> AValue then
|
||||||
|
begin
|
||||||
|
FWeekendColor := AValue;
|
||||||
|
Invalidate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TVpGanttView.SpawnEventEditDialog(IsNewEvent: Boolean);
|
procedure TVpGanttView.SpawnEventEditDialog(IsNewEvent: Boolean);
|
||||||
var
|
var
|
||||||
AllowIt: Boolean;
|
AllowIt: Boolean;
|
||||||
|
@ -31,6 +31,7 @@ type
|
|||||||
procedure DrawActiveDate;
|
procedure DrawActiveDate;
|
||||||
procedure DrawBorders;
|
procedure DrawBorders;
|
||||||
procedure DrawColHeader;
|
procedure DrawColHeader;
|
||||||
|
procedure DrawDays;
|
||||||
procedure DrawEvents;
|
procedure DrawEvents;
|
||||||
procedure DrawGrid;
|
procedure DrawGrid;
|
||||||
procedure DrawRowHeader;
|
procedure DrawRowHeader;
|
||||||
@ -282,6 +283,56 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TVpGanttViewPainter.DrawDays;
|
||||||
|
var
|
||||||
|
i, j1, j2, nDays, nEvents: Integer;
|
||||||
|
x1, y1, x2, y2: Integer;
|
||||||
|
dx, dy: Integer;
|
||||||
|
begin
|
||||||
|
with FGanttView do
|
||||||
|
begin
|
||||||
|
if StartDate = NO_DATE then
|
||||||
|
exit;
|
||||||
|
nEvents := NumEvents;
|
||||||
|
nDays := NumDays;
|
||||||
|
dx := LeftCol * ColWidth;
|
||||||
|
dy := TopRow * RowHeight;
|
||||||
|
y1 := TotalColHeaderHeight;
|
||||||
|
y2 := EventRecords[nEvents-1].HeadRect.Bottom - dy;
|
||||||
|
|
||||||
|
for i := 0 to nDays-1 do
|
||||||
|
if IsWeekend(DayRecords[i].Date) then
|
||||||
|
begin
|
||||||
|
j1 := i;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if y2 > RealBottom then
|
||||||
|
y2 := RealBottom;
|
||||||
|
|
||||||
|
RenderCanvas.Brush.Color := FGanttView.WeekendColor;
|
||||||
|
RenderCanvas.Brush.Style := bsSolid;
|
||||||
|
|
||||||
|
while j1 < nDays do
|
||||||
|
begin
|
||||||
|
if j1 < nDays-1 then
|
||||||
|
j2 := j1 + 1
|
||||||
|
else
|
||||||
|
j2 := j1;
|
||||||
|
x2 := FGanttView.DayRecords[j2].Rect.Right - dx;
|
||||||
|
if x2 >= FGanttView.FixedColWidth then
|
||||||
|
begin
|
||||||
|
x1 := FGanttView.DayRecords[j1].Rect.Left - dx;
|
||||||
|
if x1 < FGanttView.FixedColWidth then
|
||||||
|
x1 := FGanttView.FixedColWidth;
|
||||||
|
RenderCanvas.FillRect(x1, y1, x2, y2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
inc(j1, 7);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TVpGanttViewPainter.DrawEvents;
|
procedure TVpGanttViewPainter.DrawEvents;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@ -315,8 +366,10 @@ begin
|
|||||||
dec(R.Bottom, bottom_margin);
|
dec(R.Bottom, bottom_margin);
|
||||||
if R.Top < FGanttView.TotalColHeaderHeight then
|
if R.Top < FGanttView.TotalColHeaderHeight then
|
||||||
Continue;
|
Continue;
|
||||||
if R.Left < FGanttView.FixedColWidth then
|
if R.Right < FGanttView.FixedColWidth then
|
||||||
Continue;
|
Continue;
|
||||||
|
if R.Left < FGanttView.FixedColWidth then
|
||||||
|
R.Left := FGanttView.FixedColWidth;
|
||||||
cat := FGanttView.DataStore.CategoryColorMap.GetCategory(event.Category);
|
cat := FGanttView.DataStore.CategoryColorMap.GetCategory(event.Category);
|
||||||
RenderCanvas.Pen.Color := cat.Color;
|
RenderCanvas.Pen.Color := cat.Color;
|
||||||
RenderCanvas.Brush.Color := cat.BackgroundColor;
|
RenderCanvas.Brush.Color := cat.BackgroundColor;
|
||||||
@ -508,6 +561,9 @@ begin
|
|||||||
DrawRowHeader;
|
DrawRowHeader;
|
||||||
DrawColHeader;
|
DrawColHeader;
|
||||||
|
|
||||||
|
{ Draw weekends }
|
||||||
|
DrawDays;
|
||||||
|
|
||||||
{ Draw grid }
|
{ Draw grid }
|
||||||
DrawGrid;
|
DrawGrid;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user