// CodeGear C++Builder
// Copyright (c) 1995, 2014 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'FMX.TMSCalendar.pas' rev: 27.00 (Windows)

#ifndef Fmx_TmscalendarHPP
#define Fmx_TmscalendarHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.SysUtils.hpp>	// Pascal unit
#include <System.DateUtils.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit
#include <FMX.Objects.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit
#include <FMX.Platform.hpp>	// Pascal unit
#include <FMX.Types.hpp>	// Pascal unit
#include <FMX.TMSBaseControl.hpp>	// Pascal unit
#include <FMX.Forms.hpp>	// Pascal unit
#include <System.UITypes.hpp>	// Pascal unit
#include <FMX.Dialogs.hpp>	// Pascal unit
#include <System.Math.hpp>	// Pascal unit
#include <FMX.TMSHTMLText.hpp>	// Pascal unit
#include <FMX.Menus.hpp>	// Pascal unit
#include <FMX.TMSEdit.hpp>	// Pascal unit
#include <FMX.StdCtrls.hpp>	// Pascal unit
#include <FMX.ExtCtrls.hpp>	// Pascal unit
#include <FMX.Graphics.hpp>	// Pascal unit
#include <FMX.Edit.hpp>	// Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Fmx
{
namespace Tmscalendar
{
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TTMSFMXCalendarDateEventKind : unsigned char { ekTriangle, ekRectangle, ekDiamond, ekEllipse };

class DELPHICLASS TProtectedControl;
class PASCALIMPLEMENTATION TProtectedControl : public Fmx::Controls::TControl
{
	typedef Fmx::Controls::TControl inherited;
	
public:
	/* TControl.Create */ inline __fastcall virtual TProtectedControl(System::Classes::TComponent* AOwner) : Fmx::Controls::TControl(AOwner) { }
	/* TControl.Destroy */ inline __fastcall virtual ~TProtectedControl(void) { }
	
};


enum DECLSPEC_DENUM TTMSFMXCalendarStartDay : unsigned char { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

class DELPHICLASS TTMSFMXCalendarEvent;
class DELPHICLASS TTMSFMXCalendarEvents;
class PASCALIMPLEMENTATION TTMSFMXCalendarEvent : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TTMSFMXCalendarEvents* FOwner;
	System::TDate FDate;
	System::UnicodeString FText;
	TTMSFMXCalendarDateEventKind FKind;
	System::Uitypes::TAlphaColor FColor;
	void __fastcall SetDate(const System::TDate Value);
	void __fastcall SetText(const System::UnicodeString Value);
	void __fastcall SetKind(const TTMSFMXCalendarDateEventKind Value);
	void __fastcall SetColor(const System::Uitypes::TAlphaColor Value);
	
public:
	__fastcall virtual TTMSFMXCalendarEvent(System::Classes::TCollection* Collection);
	
__published:
	__property System::TDate Date = {read=FDate, write=SetDate};
	__property System::UnicodeString Text = {read=FText, write=SetText};
	__property TTMSFMXCalendarDateEventKind Kind = {read=FKind, write=SetKind, default=3};
	__property System::Uitypes::TAlphaColor Color = {read=FColor, write=SetColor, default=-16711936};
public:
	/* TCollectionItem.Destroy */ inline __fastcall virtual ~TTMSFMXCalendarEvent(void) { }
	
};


typedef System::DynamicArray<TTMSFMXCalendarEvent*> TTMSFMXCalendarEventsArray;

class PASCALIMPLEMENTATION TTMSFMXCalendarEvents : public Fmx::Tmsbasecontrol::TTMSFMXBaseCollection
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseCollection inherited;
	
public:
	TTMSFMXCalendarEvent* operator[](int Index) { return Items[Index]; }
	
private:
	System::Classes::TNotifyEvent FOnCalendarEventChange;
	HIDESBASE TTMSFMXCalendarEvent* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TTMSFMXCalendarEvent* const Value);
	
public:
	void __fastcall UpdateCalendar(void);
	__property TTMSFMXCalendarEvent* Items[int Index] = {read=GetItem, write=SetItem/*, default*/};
	HIDESBASE TTMSFMXCalendarEvent* __fastcall Add(void);
	HIDESBASE TTMSFMXCalendarEvent* __fastcall Insert(int Index);
	virtual void __fastcall EndUpdate(void);
	__property System::Classes::TNotifyEvent OnCalendarEventChange = {read=FOnCalendarEventChange, write=FOnCalendarEventChange};
public:
	/* TCollection.Create */ inline __fastcall TTMSFMXCalendarEvents(System::Classes::TCollectionItemClass ItemClass) : Fmx::Tmsbasecontrol::TTMSFMXBaseCollection(ItemClass) { }
	/* TCollection.Destroy */ inline __fastcall virtual ~TTMSFMXCalendarEvents(void) { }
	
};


class DELPHICLASS TDisjunctDateItem;
class PASCALIMPLEMENTATION TDisjunctDateItem : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	System::TDate FDate;
	
__published:
	__property System::TDate Date = {read=FDate, write=FDate};
public:
	/* TCollectionItem.Create */ inline __fastcall virtual TDisjunctDateItem(System::Classes::TCollection* Collection) : System::Classes::TCollectionItem(Collection) { }
	/* TCollectionItem.Destroy */ inline __fastcall virtual ~TDisjunctDateItem(void) { }
	
};


class DELPHICLASS TDisjunctDateArray;
class PASCALIMPLEMENTATION TDisjunctDateArray : public Fmx::Tmsbasecontrol::TTMSFMXBaseCollection
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseCollection inherited;
	
public:
	TDisjunctDateItem* operator[](int Index) { return Items[Index]; }
	
private:
	System::Classes::TNotifyEvent FOnDisjunctArrayChange;
	HIDESBASE TDisjunctDateItem* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TDisjunctDateItem* const Value);
	
public:
	__property TDisjunctDateItem* Items[int Index] = {read=GetItem, write=SetItem/*, default*/};
	HIDESBASE TDisjunctDateItem* __fastcall Add(void);
	HIDESBASE TDisjunctDateItem* __fastcall Insert(int Index);
	virtual void __fastcall EndUpdate(void);
	__property System::Classes::TNotifyEvent OnDisjunctArrayChange = {read=FOnDisjunctArrayChange, write=FOnDisjunctArrayChange};
public:
	/* TCollection.Create */ inline __fastcall TDisjunctDateArray(System::Classes::TCollectionItemClass ItemClass) : Fmx::Tmsbasecontrol::TTMSFMXBaseCollection(ItemClass) { }
	/* TCollection.Destroy */ inline __fastcall virtual ~TDisjunctDateArray(void) { }
	
};


class DELPHICLASS TTMSFMXCalendarDateEventShape;
class PASCALIMPLEMENTATION TTMSFMXCalendarDateEventShape : public Fmx::Tmsbasecontrol::TTMSFMXBaseShape
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseShape inherited;
	
private:
	System::TDate FDate;
	TTMSFMXCalendarDateEventKind FKind;
	TTMSFMXCalendarEvent* FEvent;
	void __fastcall SetKind(const TTMSFMXCalendarDateEventKind Value);
	
public:
	__fastcall virtual TTMSFMXCalendarDateEventShape(System::Classes::TComponent* AOwner);
	virtual void __fastcall Painting(void);
	__property System::TDate Date = {read=FDate, write=FDate};
	__property TTMSFMXCalendarEvent* Event = {read=FEvent, write=FEvent};
	
__published:
	__property TTMSFMXCalendarDateEventKind Kind = {read=FKind, write=SetKind, default=3};
	__property Fill;
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap;
	__property StrokeDash;
	__property StrokeJoin;
public:
	/* TShape.Destroy */ inline __fastcall virtual ~TTMSFMXCalendarDateEventShape(void) { }
	
};


class DELPHICLASS TTMSFMXCalendarDateShape;
class DELPHICLASS TTMSFMXCalendar;
class PASCALIMPLEMENTATION TTMSFMXCalendarDateShape : public Fmx::Objects::TRectangle
{
	typedef Fmx::Objects::TRectangle inherited;
	
private:
	System::TDate FDate;
	TTMSFMXCalendar* FCalendar;
	
public:
	__property TTMSFMXCalendar* Calendar = {read=FCalendar, write=FCalendar};
	virtual void __fastcall Paint(void);
	__property System::TDate Date = {read=FDate, write=FDate};
public:
	/* TRectangle.Create */ inline __fastcall virtual TTMSFMXCalendarDateShape(System::Classes::TComponent* AOwner) : Fmx::Objects::TRectangle(AOwner) { }
	
public:
	/* TShape.Destroy */ inline __fastcall virtual ~TTMSFMXCalendarDateShape(void) { }
	
};


typedef void __fastcall (__closure *TTMSFMXCalendarCurrentDayLabelClick)(System::TObject* Sender, System::TDate ADate, bool &Allow);

typedef void __fastcall (__closure *TTMSFMXCalendarDaySelect)(System::TObject* Sender, System::TDate ADate);

typedef void __fastcall (__closure *TTMSFMXCalendarMultiDaySelect)(System::TObject* Sender, System::TDate AStartDate, System::TDate AEndDate);

typedef void __fastcall (__closure *TTMSFMXCalendarDisjunctDaySelect)(System::TObject* Sender, TDisjunctDateArray* ADates);

typedef void __fastcall (__closure *TTMSFMXCalendarCustomizeDay)(System::TObject* Sender, System::TDate ADate, TTMSFMXCalendarDateShape* ADayObject);

typedef void __fastcall (__closure *TTMSFMXCalendarCustomizeWeekDay)(System::TObject* Sender, int AWeekDay, TTMSFMXCalendarDateShape* AWeekDayObject);

typedef void __fastcall (__closure *TTMSFMXCalendarCustomizeWeekNumber)(System::TObject* Sender, int AWeekNumber, TTMSFMXCalendarDateShape* AWeekNumberObject);

typedef void __fastcall (__closure *TTMSFMXCalendarCustomizeEvent)(System::TObject* Sender, TTMSFMXCalendarEvent* AEvent, TTMSFMXCalendarDateEventShape* AEventObject);

typedef void __fastcall (__closure *TTMSFMXCalendarEventClick)(System::TObject* Sender, TTMSFMXCalendarEvent* AEvent, TTMSFMXCalendarDateEventShape* AEventObject);

typedef void __fastcall (__closure *TTMSFMXCalendarEventShow)(System::TObject* Sender, TTMSFMXCalendarEvent* AEvent, TTMSFMXCalendarDateEventShape* AEventObject, Fmx::Stdctrls::TCalloutPanel* AEventPopup, bool &Allow);

typedef void __fastcall (__closure *TTMSFMXCalendarEventHide)(System::TObject* Sender, TTMSFMXCalendarEvent* AEvent, TTMSFMXCalendarDateEventShape* AEventObject, Fmx::Stdctrls::TCalloutPanel* AEventPopup);

typedef void __fastcall (__closure *TTMSFMXCalendarHasEvent)(System::TObject* Sender, System::TDate ADate, System::Uitypes::TAlphaColor &EventColor, System::UnicodeString &EventText, bool &HasEvent);

typedef void __fastcall (__closure *TTMSFMXCalendarMonthChanged)(System::TObject* Sender, int APreviousMonth, int AMonth);

typedef void __fastcall (__closure *TTMSFMXCalendarYearChanged)(System::TObject* Sender, int APreviousYear, int AYear);

enum DECLSPEC_DENUM TTMSFMXCalendarNavigate : unsigned char { cnNone, cnSingleDaySelect, cnAlways };

enum DECLSPEC_DENUM TTMSFMXCalendarWeekNumbersPosition : unsigned char { wnpLeft, wnpRight };

class PASCALIMPLEMENTATION TTMSFMXCalendar : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	bool FFirst;
	bool FMouseDown;
	Fmx::Extctrls::TPopupBox* FMonths;
	Fmx::Extctrls::TPopupBox* FYears;
	bool BlockUpdate;
	System::Classes::TShiftState FShiftState;
	int FUpdateCount;
	TDisjunctDateArray* FDisjunctDays;
	System::TDate FDate;
	TTMSFMXCalendarStartDay FStartDay;
	bool FShowDaysBefore;
	bool FShowDaysAfter;
	bool FShowCurrentDay;
	System::TDate FMaxDate;
	System::TDate FMinDate;
	bool FShowWeekDays;
	bool FShowCurrentDayFooter;
	TTMSFMXCalendarCurrentDayLabelClick FOnCurrentDayLabelClick;
	TTMSFMXCalendarCustomizeWeekDay FOnCustomizeWeekDay;
	TTMSFMXCalendarCustomizeDay FOnCustomizeDay;
	TTMSFMXCalendarDaySelect FOnDaySelect;
	bool FMultiSelect;
	TTMSFMXCalendarMultiDaySelect FOnMultiDaySelect;
	TTMSFMXCalendarDisjunctDaySelect FOnDisjunctDaySelect;
	bool FDisjunctSelect;
	System::TDate FSelectedDay;
	TTMSFMXCalendarNavigate FNavigateOnDayBefore;
	TTMSFMXCalendarNavigate FNavigateOnDayAfter;
	bool FShowWeekNumbers;
	TTMSFMXCalendarCustomizeWeekNumber FOnCustomizeWeekNumber;
	TTMSFMXCalendarWeekNumbersPosition FWeekNumbersPosition;
	float FWeekDaysHeight;
	float FWeekNumbersWidth;
	TTMSFMXCalendarEvents* FEvents;
	TTMSFMXCalendarCustomizeEvent FOnCustomizeEvent;
	TTMSFMXCalendarEventClick FOnEventClick;
	TTMSFMXCalendarEventShow FOnEventShow;
	TTMSFMXCalendarEventHide FOnEventHide;
	Fmx::Stdctrls::TCalloutPanel* FEventPopup;
	Fmx::Tmshtmltext::TTMSFMXHTMLText* FEventLabel;
	TTMSFMXCalendarHasEvent FOnHasEvent;
	System::TDate FFocusedDay;
	bool FShowFocusedDay;
	System::Classes::TNotifyEvent FOnInternalDropDown;
	TTMSFMXCalendarYearChanged FOnYearChanged;
	TTMSFMXCalendarMonthChanged FOnMonthChanged;
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	void __fastcall SetVersion(const System::UnicodeString Value);
	void __fastcall SetDate(const System::TDate Value);
	void __fastcall SetStartDay(const TTMSFMXCalendarStartDay Value);
	void __fastcall SetShowDaysAfter(const bool Value);
	void __fastcall SetShowDaysBefore(const bool Value);
	void __fastcall SetShowCurrentDay(const bool Value);
	bool __fastcall DoStoreMaxDate(void);
	bool __fastcall DoStoreMinDate(void);
	void __fastcall SetMaxDate(const System::TDate Value);
	void __fastcall SetMinDate(const System::TDate Value);
	void __fastcall SetShowWeekDays(const bool Value);
	void __fastcall SetShowCurrentDayFooter(const bool Value);
	void __fastcall SetMultiSelect(const bool Value);
	void __fastcall SetDisjunctSelect(const bool Value);
	void __fastcall SetSelectedDays(TDisjunctDateArray* const Value);
	void __fastcall SetSelectedDay(const System::TDate Value);
	void __fastcall SetNavigateOnDayAfter(const TTMSFMXCalendarNavigate Value);
	void __fastcall SetNavigateOnDayBefore(const TTMSFMXCalendarNavigate Value);
	void __fastcall SetShowWeekNumbers(const bool Value);
	void __fastcall SetWeekNumbersPosition(const TTMSFMXCalendarWeekNumbersPosition Value);
	void __fastcall SetWeekDaysHeight(const float Value);
	void __fastcall SetWeekNumbersWidth(const float Value);
	void __fastcall SetEvents(TTMSFMXCalendarEvents* const Value);
	void __fastcall SetShowFocusedDay(const bool Value);
	
protected:
	virtual void __fastcall ApplyAdditionalStyle(Fmx::Types::TFmxObject* AControl);
	void __fastcall DoMonthChange(System::TObject* Sender);
	void __fastcall DoYearChange(System::TObject* Sender);
	void __fastcall DisjunctArrayChange(System::TObject* Sender);
	void __fastcall CalendarEventChange(System::TObject* Sender);
	void __fastcall NextMonth(System::TObject* Sender);
	void __fastcall PreviousMonth(System::TObject* Sender);
	virtual void __fastcall ApplyStyle(void);
	void __fastcall AssignEvents(void);
	virtual NativeUInt __fastcall GetInstance(void);
	void __fastcall UpdateCalendar(void);
	virtual void __fastcall Resize(void);
	void __fastcall CurrentDayLabelClicked(System::TObject* Sender);
	void __fastcall CalendarDateSelect(System::TObject* Sender);
	void __fastcall CalendarDateEventEnter(System::TObject* Sender);
	void __fastcall CalendarDateEventLeave(System::TObject* Sender);
	void __fastcall CalendarDateEventClick(System::TObject* Sender);
	void __fastcall CalendarDateMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall CalendarDateMouseUp(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall CalendarDateMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall KeyDown(System::Word &Key, System::WideChar &KeyChar, System::Classes::TShiftState Shift);
	virtual void __fastcall KeyUp(System::Word &Key, System::WideChar &KeyChar, System::Classes::TShiftState Shift);
	void __fastcall PrepareNavigation(System::TDate ADate, System::Classes::TShiftState Shift = System::Classes::TShiftState() );
	
public:
	__property Fmx::Extctrls::TPopupBox* MonthsPopup = {read=FMonths, write=FMonths};
	__property Fmx::Extctrls::TPopupBox* YearsPopup = {read=FYears, write=FYears};
	virtual void __fastcall BeginUpdate(void);
	virtual void __fastcall EndUpdate(void);
	bool __fastcall RemoveDateIfSelect(System::TDate Date);
	__fastcall virtual TTMSFMXCalendar(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXCalendar(void);
	void __fastcall SelectDate(System::TDate ADate, System::Classes::TShiftState AShift = System::Classes::TShiftState() );
	Fmx::Controls::TControl* __fastcall GetPreviousIndicator(void);
	Fmx::Controls::TControl* __fastcall GetNextIndicator(void);
	Fmx::Objects::TRectangle* __fastcall GetCalendarView(void);
	Fmx::Objects::TRectangle* __fastcall GetCalendarHeader(void);
	Fmx::Objects::TRectangle* __fastcall GetCalendarFooter(void);
	Fmx::Objects::TRectangle* __fastcall GetCalendarArea(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateNormal(void);
	TTMSFMXCalendarDateEventShape* __fastcall GetEventShape(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateWeek(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateWeekNumber(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateBefore(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateAfter(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateSelected(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateCurrent(void);
	TTMSFMXCalendarDateShape* __fastcall GetDateWeekend(void);
	Fmx::Objects::TText* __fastcall GetCurrentDayLabel(void);
	Fmx::Controls::TControl* __fastcall GetHeader(void);
	int __fastcall DaysPerWeek(void);
	int __fastcall GetCountRows(System::TDate ADate);
	int __fastcall GetDayOfWeekColumn(System::TDate ADate);
	System::TDate __fastcall GetDate(System::TDate ADate, int day, int dim);
	bool __fastcall IsDisjunctDate(System::TDate ADate);
	bool __fastcall IsWeekendDay(System::TDate ADate);
	__property TDisjunctDateArray* SelectedDays = {read=FDisjunctDays, write=SetSelectedDays};
	__property System::TDate SelectedDay = {read=FSelectedDay, write=SetSelectedDay};
	__property System::TDate FocusedDay = {read=FFocusedDay};
	TTMSFMXCalendarEventsArray __fastcall GetEventsByDate(System::TDate ADate);
	__property Fmx::Stdctrls::TCalloutPanel* EventPopup = {read=FEventPopup, write=FEventPopup};
	__property Fmx::Tmshtmltext::TTMSFMXHTMLText* EventPopupLabel = {read=FEventLabel, write=FEventLabel};
	__property System::Classes::TNotifyEvent OnInternalDropDown = {read=FOnInternalDropDown, write=FOnInternalDropDown};
	
__published:
	__property System::UnicodeString Version = {read=GetVersion, write=SetVersion};
	__property System::TDate Date = {read=FDate, write=SetDate};
	__property TTMSFMXCalendarNavigate NavigateOnDayBefore = {read=FNavigateOnDayBefore, write=SetNavigateOnDayBefore, default=1};
	__property TTMSFMXCalendarNavigate NavigateOnDayAfter = {read=FNavigateOnDayAfter, write=SetNavigateOnDayAfter, default=1};
	__property TTMSFMXCalendarStartDay StartDay = {read=FStartDay, write=SetStartDay, default=0};
	__property bool ShowDaysBefore = {read=FShowDaysBefore, write=SetShowDaysBefore, default=0};
	__property bool ShowDaysAfter = {read=FShowDaysAfter, write=SetShowDaysAfter, default=0};
	__property bool ShowCurrentDay = {read=FShowCurrentDay, write=SetShowCurrentDay, default=1};
	__property System::TDate MaxDate = {read=FMaxDate, write=SetMaxDate, stored=DoStoreMaxDate};
	__property System::TDate MinDate = {read=FMinDate, write=SetMinDate, stored=DoStoreMinDate};
	__property bool ShowWeekDays = {read=FShowWeekDays, write=SetShowWeekDays, default=1};
	__property bool ShowCurrentDayFooter = {read=FShowCurrentDayFooter, write=SetShowCurrentDayFooter, default=1};
	__property TTMSFMXCalendarCurrentDayLabelClick OnCurrentDayLabelClick = {read=FOnCurrentDayLabelClick, write=FOnCurrentDayLabelClick};
	__property TTMSFMXCalendarCustomizeDay OnCustomizeDay = {read=FOnCustomizeDay, write=FOnCustomizeDay};
	__property TTMSFMXCalendarCustomizeWeekDay OnCustomizeWeekDay = {read=FOnCustomizeWeekDay, write=FOnCustomizeWeekDay};
	__property TTMSFMXCalendarCustomizeWeekNumber OnCustomizeWeekNumber = {read=FOnCustomizeWeekNumber, write=FOnCustomizeWeekNumber};
	__property TTMSFMXCalendarDaySelect OnDaySelect = {read=FOnDaySelect, write=FOnDaySelect};
	__property TTMSFMXCalendarMultiDaySelect OnMultiDaySelect = {read=FOnMultiDaySelect, write=FOnMultiDaySelect};
	__property TTMSFMXCalendarDisjunctDaySelect OnDisjunctDaySelect = {read=FOnDisjunctDaySelect, write=FOnDisjunctDaySelect};
	__property bool MultiSelect = {read=FMultiSelect, write=SetMultiSelect, default=0};
	__property bool DisjunctSelect = {read=FDisjunctSelect, write=SetDisjunctSelect, default=0};
	__property bool ShowWeekNumbers = {read=FShowWeekNumbers, write=SetShowWeekNumbers, default=0};
	__property TTMSFMXCalendarWeekNumbersPosition WeekNumbersPosition = {read=FWeekNumbersPosition, write=SetWeekNumbersPosition, default=1};
	__property float WeekNumbersWidth = {read=FWeekNumbersWidth, write=SetWeekNumbersWidth};
	__property float WeekDaysHeight = {read=FWeekDaysHeight, write=SetWeekDaysHeight};
	__property TTMSFMXCalendarEvents* Events = {read=FEvents, write=SetEvents};
	__property TTMSFMXCalendarCustomizeEvent OnCustomizeEvent = {read=FOnCustomizeEvent, write=FOnCustomizeEvent};
	__property TTMSFMXCalendarHasEvent OnHasEvent = {read=FOnHasEvent, write=FOnHasEvent};
	__property TTMSFMXCalendarEventClick OnEventClick = {read=FOnEventClick, write=FOnEventClick};
	__property TTMSFMXCalendarEventShow OnEventShow = {read=FOnEventShow, write=FOnEventShow};
	__property TTMSFMXCalendarEventHide OnEventHide = {read=FOnEventHide, write=FOnEventHide};
	__property bool ShowFocusedDay = {read=FShowFocusedDay, write=SetShowFocusedDay, default=1};
	__property TTMSFMXCalendarMonthChanged OnMonthChanged = {read=FOnMonthChanged, write=FOnMonthChanged};
	__property TTMSFMXCalendarYearChanged OnYearChanged = {read=FOnYearChanged, write=FOnYearChanged};
};


class DELPHICLASS TTMSFMXCalendarPicker;
class PASCALIMPLEMENTATION TTMSFMXCalendarPicker : public Fmx::Tmsedit::TTMSFMXEditBtn
{
	typedef Fmx::Tmsedit::TTMSFMXEditBtn inherited;
	
private:
	System::TDateTime FOldDate;
	TTMSFMXCalendar* FCalendar;
	System::UnicodeString FMultiSelectDelimiter;
	System::UnicodeString FDisjunctSelectDelimiter;
	System::TDate __fastcall GetDate(void);
	void __fastcall SetDate(const System::TDate Value);
	
protected:
	void __fastcall CalendarDaySelect(System::TObject* Sender, System::TDate ADate);
	void __fastcall CalendarMultiDaySelect(System::TObject* Sender, System::TDate AStartDate, System::TDate AEndDate);
	void __fastcall CalendarDisjunctDaySelect(System::TObject* Sender, TDisjunctDateArray* ADates);
	void __fastcall CalendarDropDown(System::TObject* Sender);
	void __fastcall CloseWithEscape(System::TObject* Sender);
	
public:
	virtual void __fastcall DropDown(void);
	__fastcall virtual TTMSFMXCalendarPicker(System::Classes::TComponent* AOwner);
	__property System::TDate Date = {read=GetDate, write=SetDate};
	
__published:
	__property TTMSFMXCalendar* Calendar = {read=FCalendar, write=FCalendar};
	__property System::UnicodeString MultiSelectDelimiter = {read=FMultiSelectDelimiter, write=FMultiSelectDelimiter};
	__property System::UnicodeString DisjunctSelectDelimiter = {read=FDisjunctSelectDelimiter, write=FDisjunctSelectDelimiter};
public:
	/* TTMSFMXEditBtn.Destroy */ inline __fastcall virtual ~TTMSFMXCalendarPicker(void) { }
	
};


//-- var, const, procedure ---------------------------------------------------
static const System::Int8 MAJ_VER = System::Int8(0x1);
static const System::Int8 MIN_VER = System::Int8(0x5);
static const System::Int8 REL_VER = System::Int8(0x1);
static const System::Int8 BLD_VER = System::Int8(0x1);
}	/* namespace Tmscalendar */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSCALENDAR)
using namespace Fmx::Tmscalendar;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX)
using namespace Fmx;
#endif
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Fmx_TmscalendarHPP
