tvplanit: Add holiday support to WeekView.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5200 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-09-23 08:41:52 +00:00
parent c5e93da15a
commit 0e29ff0284
2 changed files with 12 additions and 5 deletions

View File

@ -299,6 +299,7 @@ object MainForm: TMainForm
Align = alClient
TabStop = True
TabOrder = 2
OnHoliday = VpHoliday
end
end
object Tasks: TPage

View File

@ -37,7 +37,8 @@ type
procedure DrawBorders;
procedure DrawFocusRect(ADayIndex: Integer; DayRect: TRect);
procedure DrawDay(ADayIndex: Integer; var DayRect: TRect; var EAIndex: Integer);
procedure DrawDayHeader(ADayIndex: Integer; var TextRect: TRect);
procedure DrawDayHeader(ADayIndex: Integer; AHolidayName: String;
var TextRect: TRect);
procedure DrawDays;
procedure DrawEvent(AEvent: TVpEvent; TextRect: TRect; ADayIndex: Integer);
procedure DrawHeader;
@ -276,16 +277,18 @@ var
TextRect: TRect;
J: Integer;
EventList: TList;
// dayHeadHeight: Integer;
rowHeight: Integer;
headerHeight: Integer;
tmpRect: TRect;
holiday: String;
begin
// Abbreviations
// dayHeadHeight := TVpWeekviewOpener(FWeekView).wvDayHeadHeight;
rowHeight := TVpWeekViewOpener(FWeekView).wvRowHeight;
headerHeight := TVpWeekViewOpener(FWeekView).wvHeaderHeight;
// Check for holiday
FWeekView.IsHoliday(StartDate + ADayIndex, holiday);
// Get header rectangle
TextRect := DayRect;
TextRect.Bottom := DayRect.Top + FDayHeadHeight;
@ -301,7 +304,7 @@ begin
TPSRectangle(RenderCanvas, Angle, RenderIn, tmpRect);
// Fix header string
DrawDayHeader(ADayIndex, TextRect);
DrawDayHeader(ADayIndex, holiday, TextRect);
if (FWeekView.DataStore <> nil) and (FWeekView.DataStore.Resource <> nil) and
(FWeekView.DataStore.Resource.Schedule.EventCountByDay(StartDate + ADayIndex) > 0) and
@ -402,7 +405,8 @@ begin
end;
end;
procedure TVpWeekViewPainter.DrawDayHeader(ADayIndex: Integer; var TextRect: TRect);
procedure TVpWeekViewPainter.DrawDayHeader(ADayIndex: Integer; AHolidayName: String;
var TextRect: TRect);
var
dayStr: String;
strWid: Integer;
@ -412,6 +416,8 @@ begin
{$IFDEF LCL}
{$IF FPC_FULLVERSION < 30000}DayStr := SysToUTF8(DayStr); {$ENDIF}
{$ENDIF}
if AHolidayName <> '' then
dayStr := dayStr + ' - ' + AHolidayName;
strWid := RenderCanvas.TextWidth(dayStr);
if strWid > WidthOf(TextRect) then