You've already forked lazarus-ccr
tvplanit: Add holiday support to TVpCalendar.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8553 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -48,11 +48,12 @@ uses
|
||||
type
|
||||
TVpCalDisplayOption = (cdoShortNames, cdoShowYear, cdoShowInactive,
|
||||
cdoShowRevert, cdoShowToday, cdoShowNavBtns,
|
||||
cdoHideActive, cdoHighlightSat, cdoHighlightSun);
|
||||
cdoHideActive, cdoHighlightSat, cdoHighlightSun,
|
||||
cdoHighlightHolidays);
|
||||
|
||||
TVpCalDisplayOptions = set of TVpCalDisplayOption;
|
||||
|
||||
TVpCalColorArray = array[0..9] of TColor;
|
||||
TVpCalColorArray = array[0..10] of TColor;
|
||||
|
||||
TVpCalColorScheme = (cscalCustom, cscalClassic, cscalWindows,
|
||||
cscalGold, cscalOcean, cscalRose);
|
||||
@@ -65,13 +66,13 @@ type
|
||||
const
|
||||
{ActiveDay, DayNames, Days, InactiveDays, MonthAndYear, Weekend, EventDays, ActiveDayBorder, ActiveDayText}
|
||||
CalScheme : TVpCalSchemeArray = (
|
||||
// Active BG DayNames Days Inact.Days Month/Year Weekend Event Background Active border Active text
|
||||
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
(clWindow, clWindowText, clWindowText, clSilver, clWindowText, clRed, clWindowText, clWindow, clWindowText, clWindowText), // classic
|
||||
(clBlue, clMaroon, clBlack, clMedGray, clBlue, clRed, clBlack, clDefault, clBlack, clWhite), // windows
|
||||
(clMaroon, clBlack, clYellow, clSilver, clBlack, $7777FF, clWhite, clOlive, clBlack, clYellow), // gold
|
||||
(clBlue, clSilver, clAqua, clBlue, clSilver, clRed, clWhite, clNavy, clNavy, clWhite), // ocean
|
||||
($007500EA, clBlack, clFuchsia, clMedGray, clBlack, clRed, clMaroon, $00D9B3FF, clMaroon, clWhite) // rose
|
||||
// Active BG DayNames Days Inact.Days Month/Year Weekend Event Background Active border Active text Holidays
|
||||
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
||||
(clWindow, clWindowText, clWindowText, clSilver, clWindowText, clRed, clWindowText, clWindow, clWindowText, clWindowText, clRed), // classic
|
||||
(clBlue, clMaroon, clBlack, clMedGray, clBlue, clRed, clBlack, clDefault, clBlack, clWhite, clRed), // windows
|
||||
(clMaroon, clBlack, clYellow, clSilver, clBlack, $7777FF, clWhite, clOlive, clBlack, clYellow, $7777FF), // gold
|
||||
(clBlue, clSilver, clAqua, clBlue, clSilver, clRed, clWhite, clNavy, clNavy, clWhite, clRed), // ocean
|
||||
($007500EA, clBlack, clFuchsia, clMedGray, clBlack, clRed, clMaroon, $00D9B3FF, clMaroon, clWhite, clRed) // rose
|
||||
);
|
||||
calDefWeekStarts = dtSunday; { default start of the week }
|
||||
|
||||
@@ -105,6 +106,7 @@ type
|
||||
property MonthAndYear: TColor index 4 read GetColor write SetColor;
|
||||
property Weekend: TColor index 5 read GetColor write SetColor;
|
||||
property EventDays: TColor index 6 read GetColor write SetColor;
|
||||
property Holidays: TColor index 10 read GetColor write SetColor;
|
||||
end;
|
||||
|
||||
type
|
||||
@@ -144,6 +146,7 @@ type
|
||||
FOnDrawItem : TCalendarDateEvent;
|
||||
FOnGetDateEnabled: TGetDateEnabledEvent;
|
||||
FOnGetHighlight : TGetHighlightEvent;
|
||||
FOnHoliday : TVpHolidayEvent;
|
||||
|
||||
{internal variables}
|
||||
clInLinkHandler : Boolean;
|
||||
@@ -258,6 +261,7 @@ type
|
||||
procedure IncDay(Delta: Integer);
|
||||
procedure IncMonth(Delta: Integer);
|
||||
procedure IncYear(Delta: Integer);
|
||||
function IsHoliday(ADate: TDate; out AHolidayName: String): Boolean;
|
||||
|
||||
procedure PaintToCanvas(ACanvas: TCanvas; ARect: TRect;
|
||||
Angle: TVpRotationAngle; ADate: TDateTime);
|
||||
@@ -304,6 +308,7 @@ type
|
||||
property OnDrawItem: TCalendarDateEvent read FOnDrawItem write FOnDrawItem;
|
||||
property OnGetDateEnabled: TGetDateEnabledEvent read FOnGetDateEnabled write FOnGetDateEnabled;
|
||||
property OnGetHighlight: TGetHighlightEvent read FOnGetHighlight write FOnGetHighlight;
|
||||
property OnHoliday: TVpHolidayEvent read FOnHoliday write FOnHoliday;
|
||||
end;
|
||||
|
||||
TVpCalendar = class(TVpCustomCalendar)
|
||||
@@ -354,6 +359,7 @@ type
|
||||
property OnExit;
|
||||
property OnGetDateEnabled;
|
||||
property OnGetHighlight;
|
||||
property OnHoliday;
|
||||
property OnKeyDown;
|
||||
property OnKeyPress;
|
||||
property OnKeyUp;
|
||||
@@ -1418,6 +1424,18 @@ begin
|
||||
SetDate(DateUtils.IncYear(FDate, Delta));
|
||||
end;
|
||||
|
||||
function TVpCustomCalendar.IsHoliday(ADate: TDate; out AHolidayName: String): Boolean;
|
||||
begin
|
||||
AHolidayName := '';
|
||||
if Assigned(FOnHoliday) then
|
||||
begin
|
||||
FOnHoliday(Self, trunc(ADate), AHolidayName);
|
||||
Result := AHolidayName <> '';
|
||||
end else
|
||||
if Assigned(FControlLink) then
|
||||
Result := FControlLink.IsHoliday(ADate, AHolidayName);
|
||||
end;
|
||||
|
||||
procedure TVpCustomCalendar.Paint;
|
||||
begin
|
||||
RenderToCanvas(
|
||||
|
Reference in New Issue
Block a user