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

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

#ifndef Fmx_TmspagesliderHPP
#define Fmx_TmspagesliderHPP

#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.SysUtils.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.Math.hpp>	// Pascal unit
#include <FMX.Forms.hpp>	// Pascal unit
#include <FMX.Types.hpp>	// Pascal unit
#include <System.UITypes.hpp>	// Pascal unit
#include <FMX.TMSBaseControl.hpp>	// Pascal unit
#include <FMX.TMSHTMLText.hpp>	// Pascal unit
#include <FMX.TMSBitmapContainer.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit
#include <System.Generics.Collections.hpp>	// Pascal unit
#include <FMX.Graphics.hpp>	// Pascal unit
#include <FMX.Effects.hpp>	// Pascal unit
#include <System.Generics.Defaults.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Tmspageslider
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TDbgList;
class PASCALIMPLEMENTATION TDbgList : public System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*>
{
	typedef System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*> inherited;
	
public:
	void * operator[](int Index) { return Items[Index]; }
	
private:
	void * __fastcall GetItemsEx(int Index);
	void __fastcall SetItemsEx(int Index, const void * Value);
	
public:
	__property void * Items[int Index] = {read=GetItemsEx, write=SetItemsEx/*, default*/};
public:
	/* {System_Generics_Collections}TList<FMX_Types_TFmxObject>.Create */ inline __fastcall TDbgList(void)/* overload */ : System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*>() { }
	/* {System_Generics_Collections}TList<FMX_Types_TFmxObject>.Create */ inline __fastcall TDbgList(const System::DelphiInterface<System::Generics::Defaults::IComparer__1<Fmx::Types::TFmxObject*> > AComparer)/* overload */ : System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*>(AComparer) { }
	/* {System_Generics_Collections}TList<FMX_Types_TFmxObject>.Create */ inline __fastcall TDbgList(System::Generics::Collections::TEnumerable__1<Fmx::Types::TFmxObject*>* const Collection)/* overload */ : System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*>(Collection) { }
	/* {System_Generics_Collections}TList<FMX_Types_TFmxObject>.Destroy */ inline __fastcall virtual ~TDbgList(void) { }
	
};


class DELPHICLASS TTMSFMXPage;
class DELPHICLASS TTMSFMXPageSlider;
class PASCALIMPLEMENTATION TTMSFMXPage : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	bool FDragged;
	bool FMouseDown;
	float FOldPosX;
	float FDownX;
	float FDownY;
	float FLeftTemp;
	bool FBlockUpdate;
	bool FAnimating;
	float FCurrentPos;
	bool FDesignTime;
	int FPageIndex;
	TTMSFMXPageSlider* FPageSlider;
	bool FUpdatingParent;
	bool FShowHeader;
	int FHeaderHeight;
	System::UnicodeString FHeader;
	bool FShowFooter;
	int FFooterHeight;
	System::UnicodeString FFooter;
	int FMinimumWidth;
	Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* FBitmapContainer;
	Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent FOnFooterAnchorClick;
	Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent FOnHeaderAnchorClick;
	bool FEffect;
	void __fastcall SetPageSlider(TTMSFMXPageSlider* const Value);
	int __fastcall GetPageIndex(void);
	void __fastcall SetPageIndex(const int Value);
	void __fastcall SetFooter(const System::UnicodeString Value);
	void __fastcall SetHeader(const System::UnicodeString Value);
	void __fastcall SetMinimumWidth(const int Value);
	void __fastcall SetCurrentPos(const float Value);
	float __fastcall GetCurrentPos(void);
	void __fastcall SetBitmapContainer(Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* const Value);
	void __fastcall SetEffect(const bool Value);
	
protected:
	virtual void __fastcall ApplyStyle(void);
	Fmx::Controls::TControl* __fastcall GetHeaderText(void);
	Fmx::Controls::TControl* __fastcall GetFooterText(void);
	Fmx::Controls::TControl* __fastcall GetHeader(void);
	Fmx::Controls::TControl* __fastcall GetFooter(void);
	Fmx::Controls::TControl* __fastcall GetContent(void);
	Fmx::Effects::TEffect* __fastcall GetEffect(void);
	virtual void __fastcall Notification(System::Classes::TComponent* AComponent, System::Classes::TOperation Operation);
	__property float CurrentPos = {read=GetCurrentPos, write=SetCurrentPos};
	float __fastcall GetPosTo(void);
	void __fastcall DoKeyDown(System::TObject* Sender, System::Word &Key, System::WideChar &KeyChar, System::Classes::TShiftState Shift);
	void __fastcall DoMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall DoMouseUp(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall DoMouseLeaveAction(System::TObject* Sender);
	void __fastcall DoMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	DYNAMIC void __fastcall SetParentComponent(System::Classes::TComponent* Value);
	virtual void __fastcall ReadState(System::Classes::TReader* Reader);
	void __fastcall AssignEvents(void);
	void __fastcall UpdateHeader(void);
	void __fastcall UpdateEffect(void);
	void __fastcall UpdateFooter(void);
	virtual void __fastcall UpdateMargins(void);
	void __fastcall DoHeaderAnchorClick(System::TObject* Sender, System::UnicodeString Anchor);
	void __fastcall DoFooterAnchorClick(System::TObject* Sender, System::UnicodeString Anchor);
	
public:
	__fastcall virtual TTMSFMXPage(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXPage(void);
	virtual void __fastcall SetBounds(float X, float Y, float AWidth, float AHeight);
	__property TTMSFMXPageSlider* PageSlider = {read=FPageSlider, write=SetPageSlider};
	
__published:
	__property System::UnicodeString Header = {read=FHeader, write=SetHeader};
	__property System::UnicodeString Footer = {read=FFooter, write=SetFooter};
	__property int MinimumWidth = {read=FMinimumWidth, write=SetMinimumWidth, default=200};
	__property int PageIndex = {read=GetPageIndex, write=SetPageIndex, stored=false, nodefault};
	__property Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* BitmapContainer = {read=FBitmapContainer, write=SetBitmapContainer};
	__property Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent OnHeaderAnchorClick = {read=FOnHeaderAnchorClick, write=FOnHeaderAnchorClick};
	__property Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent OnFooterAnchorClick = {read=FOnFooterAnchorClick, write=FOnFooterAnchorClick};
	__property bool Effect = {read=FEffect, write=SetEffect, nodefault};
};


typedef void __fastcall (__closure *TPageMovedEvent)(System::TObject* Sender, int FromPos, int ToPos);

typedef void __fastcall (__closure *TPageChangingEvent)(System::TObject* Sender, int FromPage, int ToPage, bool &AllowChange);

class PASCALIMPLEMENTATION TTMSFMXPageSlider : public TTMSFMXPage
{
	typedef TTMSFMXPage inherited;
	
private:
	bool FAnimate;
	Fmx::Types::TTimer* FTimer;
	TDbgList* FPages;
	bool FPropertiesLoaded;
	int FActivePageIndex;
	System::Classes::TNotifyEvent FOnChange;
	bool FConstructed;
	bool FDesignTime;
	bool FShowFocus;
	TPageMovedEvent FOnPageMoved;
	TPageChangingEvent FOnChanging;
	int FAnimationFactor;
	void __fastcall SetAllPagesPosition(void);
	int __fastcall GetPageCount(void);
	TTMSFMXPage* __fastcall GetPage(int index);
	TTMSFMXPage* __fastcall GetActivePage(void);
	int __fastcall GetActivePageIndex(void);
	void __fastcall SetActivePage(TTMSFMXPage* const Value);
	void __fastcall SetActivePageIndex(const int Value);
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	void __fastcall SetVersion(const System::UnicodeString Value);
	void __fastcall SetAnimationFactor(const int Value);
	
protected:
	virtual void __fastcall UpdateMargins(void);
	virtual System::UnicodeString __fastcall GetClassStyleName(void);
	System::Types::TRectF __fastcall GetPageRect(void);
	virtual void __fastcall DialogKey(System::Word &Key, System::Classes::TShiftState Shift);
	void __fastcall DoTimer(System::TObject* Sender);
	virtual void __fastcall Notification(System::Classes::TComponent* AComponent, System::Classes::TOperation Operation);
	virtual void __fastcall Resize(void);
	void __fastcall ChangeActivePage(int PageIndex);
	int __fastcall IsActivePageNeighbour(int PageIndex);
	
public:
	virtual void __fastcall Paint(void);
	__fastcall virtual TTMSFMXPageSlider(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXPageSlider(void);
	DYNAMIC void __fastcall GetChildren(System::Classes::TGetChildProc Proc, System::Classes::TComponent* Root);
	int __fastcall AddPage(TTMSFMXPage* APage)/* overload */;
	int __fastcall AddPage(System::UnicodeString PageCaption)/* overload */;
	void __fastcall RemovePage(TTMSFMXPage* APage);
	void __fastcall MovePage(int CurIndex, int NewIndex);
	TTMSFMXPage* __fastcall FindNextPage(TTMSFMXPage* CurPage, bool GoForward);
	void __fastcall SelectNextPage(bool GoForward);
	int __fastcall IndexOfPage(TTMSFMXPage* APage);
	__property int PageCount = {read=GetPageCount, nodefault};
	__property TTMSFMXPage* Pages[int index] = {read=GetPage};
	void __fastcall NextPage(void);
	void __fastcall PreviousPage(void);
	
__published:
	__property int AnimationFactor = {read=FAnimationFactor, write=SetAnimationFactor, default=5};
	__property Align = {default=0};
	__property Anchors;
	__property TTMSFMXPage* ActivePage = {read=GetActivePage, write=SetActivePage};
	__property ShowHint = {default=0};
	__property System::UnicodeString Version = {read=GetVersion, write=SetVersion, stored=false};
	__property int ActivePageIndex = {read=GetActivePageIndex, write=SetActivePageIndex, nodefault};
	__property Visible = {default=1};
	__property TPageMovedEvent OnPageMoved = {read=FOnPageMoved, write=FOnPageMoved};
	__property System::Classes::TNotifyEvent OnPageChange = {read=FOnChange, write=FOnChange};
	__property TPageChangingEvent OnPageChanging = {read=FOnChanging, write=FOnChanging};
	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
	__property OnDragDrop;
	__property OnDragOver;
	__property OnEnter;
	__property OnExit;
	__property OnMouseDown;
	__property OnMouseMove;
	__property OnMouseUp;
	__property OnResize;
	__property TabOrder = {default=-1};
};


//-- var, const, procedure ---------------------------------------------------
static const System::Int8 SHADOWSIZE = System::Int8(0xc);
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(0x0);
static const System::Int8 BLD_VER = System::Int8(0x1);
}	/* namespace Tmspageslider */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSPAGESLIDER)
using namespace Fmx::Tmspageslider;
#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_TmspagesliderHPP
