CalLite: Add event OnMonthChange.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5340 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-11-11 16:45:49 +00:00
parent a6a39e32de
commit 6fec96e71d
3 changed files with 42 additions and 6 deletions

View File

@ -495,6 +495,14 @@ object Form1: TForm1
TabOrder = 13
end
end
object Label1: TLabel
Left = 15
Height = 15
Top = 818
Width = 34
Caption = 'Label1'
ParentColor = False
end
object FontDialog: TFontDialog
MinFontSize = 0
MaxFontSize = 0

View File

@ -37,6 +37,7 @@ type
FontDialog: TFontDialog;
GroupBox1: TGroupBox;
ImageList1: TImageList;
Label1: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
@ -76,7 +77,8 @@ type
private
copyCal, demoCal: TCalendarLite;
FNoHolidays: boolean;
procedure RespondToDateChange(Sender: tObject);
procedure RespondToDateChange(Sender: TObject);
procedure RespondToMonthChange(Sender: TObject);
procedure GetDayText(Sender: TObject; AYear, AMonth, ADay: Word; var AText: String);
procedure GetHintText(Sender: TObject; AYear, AMonth, ADay: Word; var AText: String);
procedure GetHolidays(Sender: TObject; AMonth, AYear: Integer; // wp
@ -96,6 +98,8 @@ implementation
{$R *.lfm}
uses
DateUtils;
function Easter(year:integer) : TDateTime; // wp
var
@ -139,6 +143,7 @@ begin
demoCal.Height := seHeight.Value;
demoCal.OnGetHolidays := @GetHolidays;
demoCal.OnDateChange:= @RespondToDateChange;
demoCal.OnMonthChange := @RespondToMonthChange;
demoCal.OnHint := @GetHintText;
demoCal.ShowHint := true;
demoCal.Hint := 'Calendar';
@ -306,7 +311,11 @@ begin
SelDateListbox.Clear;
for i:=0 to High(s) do
SelDateListbox.Items.Add(DateToStr(s[i]));
end;
procedure TForm1.RespondToMonthChange(Sender: TObject);
begin
Label1.Caption := 'Month changed to ' + demoCal.GetMonthName(MonthOf(democal.Date));
end;
procedure TForm1.GetDayText(Sender: TObject; AYear, AMonth, ADay: Word;

View File

@ -249,6 +249,7 @@ type
FDisplayTexts: TStringList;
FMonthNames: TStringList;
FOnDateChange: TNotifyEvent;
FOnMonthChange: TNotifyEvent;
FOnGetDayText: TCalGetDayTextEvent;
FOnDrawCell: TCalDrawCellEvent;
FOnGetHolidays: TGetHolidaysEvent;
@ -264,9 +265,9 @@ type
FMultiSelect: Boolean;
FSelDates: TCalDateList;
FLanguage: TLanguage; //Ariel Rodriguez 12/09/2013
procedure DateChange;
function GetDayNames: String;
function GetDisplaytexts: String;
function GetDisplayText(aTextIndex: TDisplayText): String;
function GetDisplayTexts: String;
function GetMonthNames: String;
procedure HolidayMenuItemClicked(Sender: TObject);
procedure MonthMenuItemClicked(Sender: TObject);
@ -287,11 +288,10 @@ type
protected
procedure ChangeDateTo(ADate: TDate; ASelMode: TCalSelMode);
procedure DateChange; virtual;
class function GetControlClassDefaultSize: TSize; override;
function GetDayName(ADayOfWeek: TDayOfWeek): String;
function GetDisplayText(aTextIndex: TDisplayText): String;
function GetMonthName(AMonth: Integer): String;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure MonthChange; virtual;
procedure MouseDown(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override;
procedure MouseEnter; override;
procedure MouseLeave; override;
@ -308,6 +308,9 @@ type
constructor Create(anOwner: TComponent); override;
destructor Destroy; override;
function GetDayName(ADayOfWeek: TDayOfWeek): String;
function GetMonthName(AMonth: Integer): String;
function IsSelected(ADate: TDate): Boolean;
function SelectedDates: TCalDateArray;
@ -378,6 +381,7 @@ type
property OnGetDayText: TCalGetDayTextEvent read FOnGetDayText write FOnGetDayText;
property OnGetHolidays: TGetHolidaysEvent read FOnGetHolidays write FOnGetHolidays;
property OnHint: TCalGetDayTextEvent read FOnHint write FOnHint;
property OnMonthChange: TNotifyEvent read FOnMonthChange write FOnMonthChange;
property OnPrepareCanvas: TCalPrepareCanvasEvent read FOnPrepareCanvas write FOnPrepareCanvas;
end;
@ -1308,7 +1312,9 @@ end;
procedure TCalendarLite.ChangeDateTo(ADate: TDate; ASelMode: TCalSelMode);
var
d, d1, d2: TDate;
oldMonth: Integer;
begin
oldMonth := MonthOf(FDate);
FDate := ADate;
case ASelMode of
@ -1351,6 +1357,8 @@ begin
FPrevDate := ADate;
DateChange;
if MonthOf(FDate) <> oldMonth then
MonthChange;
with FCalDrawer do begin
FCanvas.Brush.Color := Colors.BackgroundColor;
FCanvas.FillRect(FBoundsRect);
@ -1449,6 +1457,12 @@ begin
inherited;
end;
procedure TCalendarLite.MonthChange;
begin
if Assigned(FOnMonthChange) then
FOnMonthChange(Self);
end;
procedure TCalendarLite.MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
@ -1657,12 +1671,17 @@ end;
procedure TCalendarLite.SetDate(AValue: TDateTime);
var
oldMonth: Integer;
begin
if FDate = AValue then Exit;
oldMonth := MonthOf(FDate);
FDate := AValue;
FPrevDate := AValue;
FSelDates.Clear;
DateChange;
if MonthOf(FDate) <> oldMonth then
MonthChange;
Invalidate;
end;