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

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

#ifndef Fmx_TmssliderHPP
#define Fmx_TmssliderHPP

#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 <FMX.Types.hpp>	// Pascal unit
#include <FMX.Objects.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit
#include <System.SysUtils.hpp>	// Pascal unit
#include <System.UITypes.hpp>	// Pascal unit
#include <FMX.TMSBaseControl.hpp>	// Pascal unit
#include <System.Math.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Tmsslider
{
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TTMSFMXSliderState : unsigned char { ssOn, ssOff };

class DELPHICLASS TTMSFMXSlider;
class PASCALIMPLEMENTATION TTMSFMXSlider : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	Fmx::Types::TTimer* FTimer;
	float FCurrentPos;
	float FPosTo;
	bool FDoAnimation;
	float FCx;
	bool FMouseDown;
	bool FMouseDownButton;
	TTMSFMXSliderState FState;
	int FAnimationFactor;
	System::Classes::TNotifyEvent FOnStateChanged;
	void __fastcall SetState(const TTMSFMXSliderState Value);
	void __fastcall SetAnimationFactor(const int Value);
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	
protected:
	virtual NativeUInt __fastcall GetInstance(void);
	void __fastcall DoSlide(System::TObject* Sender);
	virtual void __fastcall MouseUp(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall MouseDown(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall MouseMove(System::Classes::TShiftState Shift, float X, float Y);
	System::Types::TRectF __fastcall GetButtonRect(void);
	float __fastcall GetButtonSize(void);
	virtual void __fastcall ApplyStyle(void);
	
public:
	Fmx::Objects::TRoundRect* __fastcall GetOnElement(void);
	Fmx::Objects::TRoundRect* __fastcall GetOffElement(void);
	Fmx::Objects::TRoundRect* __fastcall GetSliderElement(void);
	Fmx::Objects::TRoundRect* __fastcall GetContainerElement(void);
	__fastcall virtual TTMSFMXSlider(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXSlider(void);
	void __fastcall UpdateSlider(void);
	void __fastcall Toggle(void);
	virtual void __fastcall Update(void);
	
__published:
	__property System::UnicodeString Version = {read=GetVersion};
	__property int AnimationFactor = {read=FAnimationFactor, write=SetAnimationFactor, default=5};
	__property TTMSFMXSliderState State = {read=FState, write=SetState, default=1};
	__property System::Classes::TNotifyEvent OnStateChanged = {read=FOnStateChanged, write=FOnStateChanged};
};


//-- 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(0x0);
static const System::Int8 BLD_VER = System::Int8(0x0);
}	/* namespace Tmsslider */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSSLIDER)
using namespace Fmx::Tmsslider;
#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_TmssliderHPP
