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

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

#ifndef Fmx_TmstableviewHPP
#define Fmx_TmstableviewHPP

#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.UITypes.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit
#include <System.StrUtils.hpp>	// Pascal unit
#include <System.Math.hpp>	// Pascal unit
#include <FMX.Types.hpp>	// Pascal unit
#include <FMX.Objects.hpp>	// Pascal unit
#include <FMX.TMSBaseControl.hpp>	// Pascal unit
#include <FMX.Ani.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit
#include <FMX.TMSHTMLText.hpp>	// Pascal unit
#include <FMX.TMSBitmapContainer.hpp>	// Pascal unit
#include <FMX.TMSBitmap.hpp>	// Pascal unit
#include <FMX.TMSSearchEdit.hpp>	// Pascal unit
#include <FMX.TMSBarButton.hpp>	// Pascal unit
#include <FMX.TMSHTMLEngine.hpp>	// Pascal unit
#include <FMX.StdCtrls.hpp>	// Pascal unit
#include <System.UIConsts.hpp>	// Pascal unit
#include <FMX.Styles.hpp>	// Pascal unit
#include <System.Generics.Collections.hpp>	// Pascal unit
#include <FMX.Graphics.hpp>	// Pascal unit
#include <System.Generics.Defaults.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Tmstableview
{
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TTMSFMXTableViewItemOption : unsigned char { ioEditRectangle, ioLeftRectangle, ioCenterRectangle, ioRightRectangle, ioBulbRectangle, ioDetailRectangle, ioDeleteRectangle, ioCaptionElement, ioDescriptionElement };

class DELPHICLASS TTMSFMXTableViewCategoryShape;
class PASCALIMPLEMENTATION TTMSFMXTableViewCategoryShape : public Fmx::Objects::TRoundRect
{
	typedef Fmx::Objects::TRoundRect inherited;
	
private:
	System::Types::TPointF OriginalPos;
	int FCategoryID;
	int FLookupItemIndex;
	System::UnicodeString FCharacter;
	
public:
	__fastcall virtual TTMSFMXTableViewCategoryShape(System::Classes::TComponent* AOwner);
	Fmx::Objects::TText* __fastcall ShapeCaption(void);
	__property int CategoryID = {read=FCategoryID, write=FCategoryID, nodefault};
	__property System::UnicodeString Character = {read=FCharacter, write=FCharacter};
	__property int LookupItemIndex = {read=FLookupItemIndex, write=FLookupItemIndex, nodefault};
	
__published:
	__property Fill;
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap;
	__property StrokeDash;
	__property StrokeJoin;
public:
	/* TShape.Destroy */ inline __fastcall virtual ~TTMSFMXTableViewCategoryShape(void) { }
	
};


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) { }
	
};


class DELPHICLASS TTMSFMXTableViewLookupBarShape;
class DELPHICLASS TTMSFMXTableView;
class PASCALIMPLEMENTATION TTMSFMXTableViewLookupBarShape : public Fmx::Objects::TRectangle
{
	typedef Fmx::Objects::TRectangle inherited;
	
private:
	bool FMouseDown;
	TTMSFMXTableView* FTableView;
	Fmx::Graphics::TFont* FFont;
	Fmx::Graphics::TBrush* FFontFill;
	void __fastcall SetFont(Fmx::Graphics::TFont* const Value);
	void __fastcall SetFontFill(Fmx::Graphics::TBrush* const Value);
	
protected:
	System::UnicodeString __fastcall GetCharacter(int Idx);
	int __fastcall GetCharacterCount(void);
	
public:
	void __fastcall ProcessLookUp(float X, float Y, bool DoLookup = true);
	int __fastcall GetCategoryAtXY(float X, float Y);
	__fastcall virtual TTMSFMXTableViewLookupBarShape(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXTableViewLookupBarShape(void);
	virtual void __fastcall Paint(void);
	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);
	virtual void __fastcall MouseUp(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall DoMouseLeave(void);
	
__published:
	__property Fmx::Graphics::TFont* Font = {read=FFont, write=SetFont};
	__property Fmx::Graphics::TBrush* FontFill = {read=FFontFill, write=SetFontFill};
	__property Fill;
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap;
	__property StrokeDash;
	__property StrokeJoin;
};


class DELPHICLASS TTMSFMXTableViewScrollBarShape;
class PASCALIMPLEMENTATION TTMSFMXTableViewScrollBarShape : public Fmx::Objects::TRectangle
{
	typedef Fmx::Objects::TRectangle inherited;
	
private:
	float FPageSize;
	float FPosition;
	float FElementOpacity;
	void __fastcall SetPageSize(const float Value);
	HIDESBASE void __fastcall SetPosition(const float Value);
	void __fastcall SetElementOpacity(const float Value);
	
public:
	__fastcall virtual TTMSFMXTableViewScrollBarShape(System::Classes::TComponent* AOwner);
	virtual void __fastcall Paint(void);
	__property float PageSize = {read=FPageSize, write=SetPageSize};
	__property float Position = {read=FPosition, write=SetPosition};
	
__published:
	__property float ElementOpacity = {read=FElementOpacity, write=SetElementOpacity};
	__property Fill;
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap;
	__property StrokeDash;
	__property StrokeJoin;
public:
	/* TShape.Destroy */ inline __fastcall virtual ~TTMSFMXTableViewScrollBarShape(void) { }
	
};


class DELPHICLASS TTMSFMXTableViewBulbShape;
class DELPHICLASS TTMSFMXTableViewItem;
class PASCALIMPLEMENTATION TTMSFMXTableViewBulbShape : public Fmx::Objects::TRoundRect
{
	typedef Fmx::Objects::TRoundRect inherited;
	
private:
	Fmx::Graphics::TBrush* FFillSelected;
	Fmx::Graphics::TBrush* FStrokeSelected;
	System::Uitypes::TAlphaColor FCaptionColorSelected;
	System::Uitypes::TAlphaColor FCaptionColor;
	bool FIsSelected;
	TTMSFMXTableViewItem* FItem;
	void __fastcall SetFillSelected(Fmx::Graphics::TBrush* const Value);
	void __fastcall SetStrokeSelected(Fmx::Graphics::TBrush* const Value);
	void __fastcall SetCaptionColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetCaptionColorSelected(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetIsSelected(const bool Value);
	
public:
	__fastcall virtual TTMSFMXTableViewBulbShape(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXTableViewBulbShape(void);
	virtual void __fastcall Paint(void);
	void __fastcall UpdateControls(void);
	Fmx::Objects::TText* __fastcall ShapeCaption(void);
	
__published:
	__property Fmx::Graphics::TBrush* StrokeSelected = {read=FStrokeSelected, write=SetStrokeSelected};
	__property Fmx::Graphics::TBrush* FillSelected = {read=FFillSelected, write=SetFillSelected};
	__property System::Uitypes::TAlphaColor CaptionColor = {read=FCaptionColor, write=SetCaptionColor, default=-16777216};
	__property System::Uitypes::TAlphaColor CaptionColorSelected = {read=FCaptionColorSelected, write=SetCaptionColorSelected, default=-1};
	__property Fill;
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap;
	__property StrokeDash;
	__property StrokeJoin;
	__property TTMSFMXTableViewItem* Item = {read=FItem, write=FItem};
	__property bool IsSelected = {read=FIsSelected, write=SetIsSelected, default=0};
};


class DELPHICLASS TTMSFMXTableViewItemShape;
class PASCALIMPLEMENTATION TTMSFMXTableViewItemShape : public Fmx::Objects::TRoundRect
{
	typedef Fmx::Objects::TRoundRect inherited;
	
private:
	TTMSFMXTableViewItem* FItem;
	Fmx::Graphics::TBrush* FFillSelected;
	Fmx::Graphics::TBrush* FStrokeSelected;
	System::Uitypes::TAlphaColor FCaptionColorSelected;
	System::Uitypes::TAlphaColor FDescriptionColorSelected;
	System::Uitypes::TAlphaColor FCaptionColor;
	System::Uitypes::TAlphaColor FDescriptionColor;
	bool FIsSelected;
	Fmx::Graphics::TBrush* FFillEdit;
	Fmx::Graphics::TBrush* FStrokeEdit;
	Fmx::Types::TSides FSides;
	void __fastcall SetFillSelected(Fmx::Graphics::TBrush* const Value);
	void __fastcall SetStrokeSelected(Fmx::Graphics::TBrush* const Value);
	void __fastcall SetCaptionColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetCaptionColorSelected(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetDescriptionColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetDescriptionColorSelected(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetIsSelected(const bool Value);
	void __fastcall SetFillEdit(Fmx::Graphics::TBrush* const Value);
	void __fastcall SetStrokeEdit(Fmx::Graphics::TBrush* const Value);
	void __fastcall SetSides(const Fmx::Types::TSides Value);
	
protected:
	void __fastcall UpdateControls(void);
	
public:
	__fastcall virtual TTMSFMXTableViewItemShape(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXTableViewItemShape(void);
	virtual void __fastcall Paint(void);
	Fmx::Objects::TText* __fastcall ShapeCaption(void);
	Fmx::Objects::TRectangle* __fastcall ShapePlaceHolder(void);
	Fmx::Objects::TText* __fastcall ShapeDescription(void);
	Fmx::Objects::TRectangle* __fastcall ShapeLeftRectangle(void);
	Fmx::Objects::TRectangle* __fastcall ShapeRightRectangle(void);
	Fmx::Objects::TRectangle* __fastcall ShapeCenterRectangle(void);
	Fmx::Tmsbitmap::TTMSFMXBitmap* __fastcall ShapeLeftRectangleImage(void);
	TTMSFMXTableViewBulbShape* __fastcall ShapeBulbRectangle(void);
	Fmx::Tmshtmltext::TTMSFMXHTMLText* __fastcall ShapeBulbText(void);
	Fmx::Objects::TRectangle* __fastcall ShapeEditRectangle(void);
	Fmx::Objects::TRectangle* __fastcall ShapeDetailRectangle(void);
	Fmx::Objects::TRectangle* __fastcall ShapeDeleteRectangle(void);
	Fmx::Tmsbarbutton::TTMSFMXBarButton* __fastcall ShapeDeleteButton(void);
	
__published:
	__property Fmx::Graphics::TBrush* StrokeSelected = {read=FStrokeSelected, write=SetStrokeSelected};
	__property Fmx::Graphics::TBrush* FillSelected = {read=FFillSelected, write=SetFillSelected};
	__property Fmx::Graphics::TBrush* StrokeEdit = {read=FStrokeEdit, write=SetStrokeEdit};
	__property Fmx::Graphics::TBrush* FillEdit = {read=FFillEdit, write=SetFillEdit};
	__property System::Uitypes::TAlphaColor CaptionColor = {read=FCaptionColor, write=SetCaptionColor, default=-16777216};
	__property System::Uitypes::TAlphaColor CaptionColorSelected = {read=FCaptionColorSelected, write=SetCaptionColorSelected, default=-1};
	__property System::Uitypes::TAlphaColor DescriptionColor = {read=FDescriptionColor, write=SetDescriptionColor, default=-4737097};
	__property System::Uitypes::TAlphaColor DescriptionColorSelected = {read=FDescriptionColorSelected, write=SetDescriptionColorSelected, default=-4144960};
	__property Fill;
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap;
	__property StrokeDash;
	__property StrokeJoin;
	__property TTMSFMXTableViewItem* Item = {read=FItem, write=FItem};
	__property bool IsSelected = {read=FIsSelected, write=SetIsSelected, default=0};
	__property Fmx::Types::TSides Sides = {read=FSides, write=SetSides, default=14};
};


enum DECLSPEC_DENUM TTMSFMXTableViewCategoryType : unsigned char { ctNone, ctAlphaBetic, ctAlphaNumericFirst, ctAlphaNumericLast, ctCustom };

enum DECLSPEC_DENUM TTMSFMXTableViewScrollIndicator : unsigned char { siNone, siFade, siPermanent };

enum DECLSPEC_DENUM TTMSFMXTableViewSelectionMode : unsigned char { smSingleSelect, smMultiCtrlSelect, smMultiShiftSelect };

class DELPHICLASS TTMSFMXTableViewCategory;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXTableViewCategory : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TTMSFMXTableView* FOwner;
	System::UnicodeString FCaption;
	int FID;
	System::UnicodeString FLookupText;
	void __fastcall SetCaption(const System::UnicodeString Value);
	void __fastcall SetId(const int Value);
	void __fastcall SetLookupText(const System::UnicodeString Value);
	
public:
	__fastcall virtual TTMSFMXTableViewCategory(System::Classes::TCollection* Collection);
	System::UnicodeString __fastcall GetStrippedCaption(void);
	
__published:
	__property System::UnicodeString Caption = {read=FCaption, write=SetCaption};
	__property System::UnicodeString LookupText = {read=FLookupText, write=SetLookupText};
	__property int Id = {read=FID, write=SetId, nodefault};
public:
	/* TCollectionItem.Destroy */ inline __fastcall virtual ~TTMSFMXTableViewCategory(void) { }
	
};

#pragma pack(pop)

enum DECLSPEC_DENUM TTMSFMXTableViewSortingMode : unsigned char { mAscending, mDescending };

class DELPHICLASS TTMSFMXTableViewCategories;
class PASCALIMPLEMENTATION TTMSFMXTableViewCategories : public Fmx::Tmsbasecontrol::TTMSFMXBaseCollection
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseCollection inherited;
	
public:
	TTMSFMXTableViewCategory* operator[](int Index) { return Items[Index]; }
	
private:
	TTMSFMXTableView* FOwner;
	System::Classes::TNotifyEvent FOnChange;
	HIDESBASE TTMSFMXTableViewCategory* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TTMSFMXTableViewCategory* const Value);
	
protected:
	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	virtual int __fastcall Compare(TTMSFMXTableViewCategory* Item1, TTMSFMXTableViewCategory* Item2, bool ACaseSensitive = true, TTMSFMXTableViewSortingMode ASortingMode = (TTMSFMXTableViewSortingMode)(0x0));
	void __fastcall QuickSort(int L, int R, bool ACaseSensitive = true, TTMSFMXTableViewSortingMode ASortingMode = (TTMSFMXTableViewSortingMode)(0x0));
	
public:
	__fastcall TTMSFMXTableViewCategories(TTMSFMXTableView* AOwner);
	__property TTMSFMXTableViewCategory* Items[int Index] = {read=GetItem, write=SetItem/*, default*/};
	TTMSFMXTableViewCategory* __fastcall ItemById(int id);
	int __fastcall ItemIndexById(int id);
	HIDESBASE TTMSFMXTableViewCategory* __fastcall Add(void);
	HIDESBASE TTMSFMXTableViewCategory* __fastcall Insert(int Index);
	void __fastcall Sort(bool ACaseSensitive = true, TTMSFMXTableViewSortingMode ASortingMode = (TTMSFMXTableViewSortingMode)(0x0));
	HIDESBASE void __fastcall Clear(void);
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TTMSFMXTableViewCategories(void) { }
	
};


#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXTableViewItem : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TTMSFMXTableView* FOwner;
	System::UnicodeString FCaption;
	int FCategoryID;
	System::UnicodeString FDescription;
	TTMSFMXTableViewCategoryShape* FCategoryShape;
	int FTag;
	System::TObject* FDataObject;
	bool FDataBoolean;
	System::UnicodeString FDataString;
	bool FSelected;
	bool FDeleteButton;
	int FGroupIndex;
	Fmx::Controls::TControl* FDetailView;
	System::UnicodeString FBulbText;
	int FLeftMargin;
	int FRightMargin;
	bool FCanSelect;
	bool FCanDelete;
	float FDataValue;
	bool FCanEditCaption;
	bool FCanEditDescription;
	System::UnicodeString FBitmapName;
	Fmx::Graphics::TBitmap* FBitmap;
	bool FVisible;
	int FDataGroupIndex;
	void __fastcall SetCaption(const System::UnicodeString Value);
	void __fastcall SetCategoryID(const int Value);
	void __fastcall SetDescription(const System::UnicodeString Value);
	void __fastcall SetDataBoolean(const bool Value);
	void __fastcall SetDataObject(System::TObject* const Value);
	void __fastcall SetDataString(const System::UnicodeString Value);
	void __fastcall SetSelected(const bool Value);
	void __fastcall SetDeleteButton(const bool Value);
	void __fastcall SetGroupIndex(const int Value);
	void __fastcall SetDetailView(Fmx::Controls::TControl* const Value);
	void __fastcall SetBulbText(const System::UnicodeString Value);
	void __fastcall SetLeftMargin(const int Value);
	void __fastcall SetRightMargin(const int Value);
	void __fastcall SetCanSelect(const bool Value);
	void __fastcall SetCanDelete(const bool Value);
	void __fastcall SetDataValue(const float Value);
	void __fastcall SetCanEditCaption(const bool Value);
	void __fastcall SetCanEditDescription(const bool Value);
	void __fastcall SetBitmapName(const System::UnicodeString Value);
	void __fastcall SetBitmap(Fmx::Graphics::TBitmap* const Value);
	void __fastcall SetVisible(const bool Value);
	Fmx::Controls::TControl* __fastcall GetDetailView(void);
	void __fastcall SetDataGroupIndex(const int Value);
	Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* __fastcall GetBitmapContainer(void);
	
protected:
	void __fastcall CheckAnchor(float X, float Y);
	void __fastcall DoAnchorClickItemCaption(System::TObject* Sender, System::UnicodeString AAnchor);
	void __fastcall DoAnchorClickItemDescription(System::TObject* Sender, System::UnicodeString AAnchor);
	void __fastcall DetailAnimationFinished(System::TObject* Sender);
	void __fastcall BitmapChanged(System::TObject* Sender);
	void __fastcall DoCustomize(void);
	virtual void __fastcall ApplyEx(void);
	void __fastcall ItemCheckChanged(System::TObject* Sender);
	void __fastcall ItemRadioChanged(System::TObject* Sender);
	void __fastcall ItemTrackBarChanged(System::TObject* Sender);
	void __fastcall ItemArcDialChanged(System::TObject* Sender);
	void __fastcall ItemTextChanged(System::TObject* Sender);
	void __fastcall UpdateTableViewItem(void);
	void __fastcall UpdateBulb(void);
	void __fastcall UpdateBitmap(void);
	void __fastcall AssignBitmapContainer(void);
	void __fastcall UpdateDetailDisclosure(void);
	void __fastcall UpdateItemIndent(void);
	void __fastcall UpdateCaption(void);
	void __fastcall UpdateDescription(void);
	void __fastcall UpdateAlignments(void);
	void __fastcall ShowEditButton(void);
	void __fastcall HideEditButton(void);
	System::Types::TRectF __fastcall GetCaptionRect(void);
	System::Types::TRectF __fastcall GetDescriptionRect(void);
	__property TTMSFMXTableView* TableView = {read=FOwner};
	
public:
	__property Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* BitmapContainer = {read=GetBitmapContainer};
	System::UnicodeString __fastcall GetStrippedCaption(void);
	__fastcall virtual TTMSFMXTableViewItem(System::Classes::TCollection* Collection);
	virtual void __fastcall Assign(System::Classes::TPersistent* Source);
	__fastcall virtual ~TTMSFMXTableViewItem(void);
	void __fastcall ToggleDetailView(bool ADetailViewVisible);
	void __fastcall ShowDetailView(void);
	void __fastcall HideDetailView(void);
	void __fastcall UpdateItem(void);
	void __fastcall ToggleDeleteButton(void);
	void __fastcall ToggleEditButton(void);
	void __fastcall UpdateDetailContainer(void);
	void __fastcall EditButtonAnimFinished(System::TObject* Sender);
	void __fastcall ShapeDeleteButtonClick(System::TObject* Sender);
	void __fastcall ShowEditForCaption(void);
	void __fastcall ShowEditForDescription(void);
	TTMSFMXTableViewItemShape* __fastcall Shape(void);
	Fmx::Objects::TText* __fastcall ShapeCaption(void);
	Fmx::Objects::TText* __fastcall ShapeDescription(void);
	Fmx::Objects::TRectangle* __fastcall ShapeLeftRectangle(void);
	Fmx::Objects::TRectangle* __fastcall ShapePlaceHolder(void);
	Fmx::Objects::TRectangle* __fastcall ShapeRightRectangle(void);
	Fmx::Objects::TRectangle* __fastcall ShapeCenterRectangle(void);
	Fmx::Tmshtmltext::TTMSFMXHTMLText* __fastcall ShapeBulbText(void);
	TTMSFMXTableViewBulbShape* __fastcall ShapeBulbRectangle(void);
	Fmx::Controls::TControl* __fastcall ShapeEditChecked(void);
	Fmx::Controls::TControl* __fastcall ShapeEditUnChecked(void);
	Fmx::Objects::TRectangle* __fastcall ShapeEditRectangle(void);
	Fmx::Objects::TRectangle* __fastcall ShapeDetailRectangle(void);
	Fmx::Tmsbarbutton::TTMSFMXBarButton* __fastcall ShapeDeleteButton(void);
	Fmx::Tmsbitmap::TTMSFMXBitmap* __fastcall ShapeLeftRectangleImage(void);
	Fmx::Types::TAnimation* __fastcall DeleteAnimation(void);
	Fmx::Types::TAnimation* __fastcall EditAnimation(void);
	Fmx::Types::TAnimation* __fastcall DeleteOpacityAnimation(void);
	Fmx::Types::TAnimation* __fastcall EditOpacityAnimation(void);
	Fmx::Objects::TRectangle* __fastcall ShapeDeleteRectangle(void);
	__property TTMSFMXTableViewCategoryShape* CategoryShape = {read=FCategoryShape, write=FCategoryShape};
	__property TTMSFMXTableViewItemShape* ShapeLink = {read=Shape};
	
__published:
	__property bool CanEditCaption = {read=FCanEditCaption, write=SetCanEditCaption, default=0};
	__property bool CanEditDescription = {read=FCanEditDescription, write=SetCanEditDescription, default=0};
	__property bool CanSelect = {read=FCanSelect, write=SetCanSelect, default=1};
	__property bool CanDelete = {read=FCanDelete, write=SetCanDelete, default=1};
	__property int LeftMargin = {read=FLeftMargin, write=SetLeftMargin, default=0};
	__property int RightMargin = {read=FRightMargin, write=SetRightMargin, default=0};
	__property Fmx::Controls::TControl* DetailView = {read=GetDetailView, write=SetDetailView};
	__property System::UnicodeString Caption = {read=FCaption, write=SetCaption};
	__property System::UnicodeString Description = {read=FDescription, write=SetDescription};
	__property int CategoryID = {read=FCategoryID, write=SetCategoryID, default=-1};
	__property int Tag = {read=FTag, write=FTag, default=0};
	__property int DataGroupIndex = {read=FDataGroupIndex, write=SetDataGroupIndex, default=0};
	__property bool DataBoolean = {read=FDataBoolean, write=SetDataBoolean, nodefault};
	__property float DataValue = {read=FDataValue, write=SetDataValue};
	__property System::UnicodeString DataString = {read=FDataString, write=SetDataString};
	__property System::TObject* DataObject = {read=FDataObject, write=SetDataObject};
	__property bool Selected = {read=FSelected, write=SetSelected, nodefault};
	__property bool DeleteButton = {read=FDeleteButton, write=SetDeleteButton, default=0};
	__property int GroupIndex = {read=FGroupIndex, write=SetGroupIndex, default=0};
	__property System::UnicodeString BulbText = {read=FBulbText, write=SetBulbText};
	__property System::UnicodeString BitmapName = {read=FBitmapName, write=SetBitmapName};
	__property Fmx::Graphics::TBitmap* Bitmap = {read=FBitmap, write=SetBitmap};
	__property bool Visible = {read=FVisible, write=SetVisible, default=1};
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXTableViewItems;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXTableViewItems : public Fmx::Tmsbasecontrol::TTMSFMXBaseCollection
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseCollection inherited;
	
public:
	TTMSFMXTableViewItem* operator[](int Index) { return Items[Index]; }
	
private:
	TTMSFMXTableView* FOwner;
	HIDESBASE TTMSFMXTableViewItem* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TTMSFMXTableViewItem* const Value);
	
protected:
	virtual System::Classes::TCollectionItemClass __fastcall CreateItemClass(void);
	int __fastcall Compare(TTMSFMXTableViewItem* Item1, TTMSFMXTableViewItem* Item2, bool ACaseSensitive = true, TTMSFMXTableViewSortingMode ASortingMode = (TTMSFMXTableViewSortingMode)(0x0));
	void __fastcall QuickSort(int L, int R, bool ACaseSensitive = true, TTMSFMXTableViewSortingMode ASortingMode = (TTMSFMXTableViewSortingMode)(0x0));
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	
public:
	__fastcall TTMSFMXTableViewItems(TTMSFMXTableView* AOwner);
	__property TTMSFMXTableViewItem* Items[int Index] = {read=GetItem, write=SetItem/*, default*/};
	HIDESBASE TTMSFMXTableViewItem* __fastcall Add(void);
	HIDESBASE TTMSFMXTableViewItem* __fastcall Insert(int Index);
	void __fastcall Sort(bool ACaseSensitive = true, TTMSFMXTableViewSortingMode ASortingMode = (TTMSFMXTableViewSortingMode)(0x0));
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TTMSFMXTableViewItems(void) { }
	
};

#pragma pack(pop)

typedef void __fastcall (__closure *TTMSFMXTableViewItemCompareEvent)(System::TObject* Sender, TTMSFMXTableViewItem* Item1, TTMSFMXTableViewItem* Item2, int &CompareResult);

typedef void __fastcall (__closure *TTMSFMXTableViewLookUpEvent)(System::TObject* Sender, System::UnicodeString ACharacter, int ACharacterID, int BufferStart, int BufferStop);

typedef void __fastcall (__closure *TTMSFMXTableViewItemSelectEvent)(System::TObject* Sender, TTMSFMXTableViewItem* AItem);

typedef void __fastcall (__closure *TTMSFMXTableViewItemClickEvent)(System::TObject* Sender, TTMSFMXTableViewItem* AItem);

typedef void __fastcall (__closure *TTMSFMXTableViewCustomizeCategoryEvent)(System::TObject* Sender, TTMSFMXTableViewCategoryShape* ACategoryShape);

typedef void __fastcall (__closure *TTMSFMXTableViewCategoryClickEvent)(System::TObject* Sender, System::UnicodeString ACharacter, int ACharacterID);

typedef void __fastcall (__closure *TTMSFMXTableViewCustomizeItemEvent)(System::TObject* Sender, TTMSFMXTableViewItem* AItem, TTMSFMXTableViewItemShape* AItemShape, Fmx::Controls::TControl* AItemControlShape);

typedef void __fastcall (__closure *TTMSFMXTableViewCustomizeDetailAnimations)(System::TObject* Sender, Fmx::Types::TAnimation* ListAnimation, Fmx::Types::TAnimation* DetailAnimation);

typedef void __fastcall (__closure *TTMSFMXTableViewItemDeleteButton)(System::TObject* Sender, TTMSFMXTableViewItem* AItem, bool &AllowDelete);

typedef void __fastcall (__closure *TTMSFMXTableViewItemBeforeDrawEvent)(System::TObject* Sender, bool &AllowDraw, Fmx::Graphics::TCanvas* ACanvas, TTMSFMXTableViewItem* AItem, const System::Types::TRectF &ARectangle);

typedef void __fastcall (__closure *TTMSFMXTableViewItemAfterDrawEvent)(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, TTMSFMXTableViewItem* AItem, const System::Types::TRectF &ARectangle);

typedef void __fastcall (__closure *TTMSFMXTableViewScrollingEvent)(System::TObject* Sender, float APosition);

typedef void __fastcall (__closure *TTMSFMXTableViewArchiveEvent)(System::TObject* Sender, bool &AllowDelete);

typedef void __fastcall (__closure *TTMSFMXTableViewItemDetailEvent)(System::TObject* Sender, TTMSFMXTableViewItem* AItem);

typedef void __fastcall (__closure *TTMSFMXTableViewBeforeSearchEvent)(System::TObject* Sender, System::UnicodeString &ASearchString, bool &AllowSearch);

typedef void __fastcall (__closure *TTMSFMXTableViewBeforeFilterEvent)(System::TObject* Sender, System::UnicodeString &AFilterString, bool &AllowFilter);

typedef void __fastcall (__closure *TTMSFMXTableViewAfterSearchEvent)(System::TObject* Sender, System::UnicodeString ASearchString);

typedef void __fastcall (__closure *TTMSFMXTableViewAfterFilterEvent)(System::TObject* Sender, System::UnicodeString AFilterString);

enum DECLSPEC_DENUM TTMSFMXTableViewFiltering : unsigned char { vfNone, vfFilterStart, vfFilterRandom, vfSearch };

enum DECLSPEC_DENUM TTMSFMXTableViewLayoutMode : unsigned char { lmNormal, lmGroup };

typedef System::Set<TTMSFMXTableViewItemOption, TTMSFMXTableViewItemOption::ioEditRectangle, TTMSFMXTableViewItemOption::ioDescriptionElement> TTMSFMXTableViewItemOptions;

typedef void __fastcall (__closure *TTMSFMXTableViewCategoryAnchorClickEvent)(System::TObject* Sender, System::UnicodeString ACharacter, int ACharacterID, System::UnicodeString AAnchor);

typedef void __fastcall (__closure *TTMSFMXTableViewItemAnchorClickEvent)(System::TObject* Sender, TTMSFMXTableViewItem* AItem, System::UnicodeString AAnchor);

class DELPHICLASS TObjList;
class PASCALIMPLEMENTATION TObjList : public System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*>
{
	typedef System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*> inherited;
	
public:
	/* {System_Generics_Collections}TList<FMX_Types_TFmxObject>.Create */ inline __fastcall TObjList(void)/* overload */ : System::Generics::Collections::TList__1<Fmx::Types::TFmxObject*>() { }
	/* {System_Generics_Collections}TList<FMX_Types_TFmxObject>.Create */ inline __fastcall TObjList(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 TObjList(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 ~TObjList(void) { }
	
};


class DELPHICLASS TItemList;
class PASCALIMPLEMENTATION TItemList : public System::Generics::Collections::TList__1<System::Classes::TCollectionItem*>
{
	typedef System::Generics::Collections::TList__1<System::Classes::TCollectionItem*> inherited;
	
public:
	/* {System_Generics_Collections}TList<System_Classes_TCollectionItem>.Create */ inline __fastcall TItemList(void)/* overload */ : System::Generics::Collections::TList__1<System::Classes::TCollectionItem*>() { }
	/* {System_Generics_Collections}TList<System_Classes_TCollectionItem>.Create */ inline __fastcall TItemList(const System::DelphiInterface<System::Generics::Defaults::IComparer__1<System::Classes::TCollectionItem*> > AComparer)/* overload */ : System::Generics::Collections::TList__1<System::Classes::TCollectionItem*>(AComparer) { }
	/* {System_Generics_Collections}TList<System_Classes_TCollectionItem>.Create */ inline __fastcall TItemList(System::Generics::Collections::TEnumerable__1<System::Classes::TCollectionItem*>* const Collection)/* overload */ : System::Generics::Collections::TList__1<System::Classes::TCollectionItem*>(Collection) { }
	/* {System_Generics_Collections}TList<System_Classes_TCollectionItem>.Destroy */ inline __fastcall virtual ~TItemList(void) { }
	
};


class PASCALIMPLEMENTATION TTMSFMXTableView : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	typedef System::DynamicArray<bool> _TTMSFMXTableView__1;
	
	
private:
	bool FClearDeleteButtons;
	bool FCheckInplaceEdit;
	bool FEditMode;
	bool FBlockDeleteButton;
	TItemList* FFilterObjectList;
	System::UnicodeString FFilter;
	bool FScrollAnimationStarted;
	TItemList* FSelectedItems;
	bool FCheckDelete;
	bool FShowDeleteButton;
	bool FDetailViewVisible;
	int FBufferStart;
	int FBufferStop;
	TObjList* FDisplayList;
	TObjList* FItemList;
	TObjList* FCategoryList;
	System::StaticArray<bool, 36> FChar;
	_TTMSFMXTableView__1 FCustomChar;
	bool FBlockUpdate;
	int FUpdateCount;
	bool FMouseUp;
	bool FMouseDown;
	bool FCheckItem;
	float FSp;
	float FDragX;
	float FDragY;
	float FScrollY;
	int FTimeStart;
	int FTimeStop;
	float FCurrentPos;
	float FPosTo;
	TTMSFMXTableViewItems* FItems;
	TTMSFMXTableViewCategoryType FCategoryType;
	TTMSFMXTableViewCategories* FCategories;
	TTMSFMXTableViewItemCompareEvent FOnItemCompare;
	int FBufferSize;
	bool FAutoLoadBuffer;
	System::Classes::TNotifyEvent FOnManualLoadPreviousBuffer;
	System::Classes::TNotifyEvent FOnManualLoadNextBuffer;
	TTMSFMXTableViewScrollIndicator FScrollIndicator;
	bool FLookupBar;
	bool FAutoLookup;
	TTMSFMXTableViewLookUpEvent FOnManualLookUp;
	bool FAutoToggleDetail;
	TTMSFMXTableViewItemSelectEvent FOnItemSelected;
	TTMSFMXTableViewCustomizeCategoryEvent FOnCategoryCustomize;
	TTMSFMXTableViewCustomizeItemEvent FOnItemCustomize;
	TTMSFMXTableViewCustomizeDetailAnimations FOnAnimationCustomize;
	TTMSFMXTableViewCustomizeItemEvent FOnItemData;
	TTMSFMXTableViewItemDeleteButton FOnItemDelete;
	bool FAutoDeleteItem;
	int FSelectedItemIndex;
	int FFocusedItemIndex;
	int FInternalSelItemIndex;
	bool FMultiSelect;
	TTMSFMXTableViewFiltering FFiltering;
	TTMSFMXTableViewLayoutMode FLayoutMode;
	TTMSFMXTableViewItemBeforeDrawEvent FOnItemBeforeDraw;
	TTMSFMXTableViewItemAfterDrawEvent FOnItemAfterDraw;
	TTMSFMXTableViewScrollingEvent FOnScroll;
	TTMSFMXTableViewScrollingEvent FOnScrollFinished;
	int FTopItem;
	System::Classes::TNotifyEvent FOnMarkClick;
	System::Classes::TNotifyEvent FOnMoveClick;
	TTMSFMXTableViewArchiveEvent FOnArchiveClick;
	bool FEditButton;
	bool FBackButton;
	bool FAutoFilter;
	bool FShowFilter;
	System::UnicodeString FMarkText;
	System::UnicodeString FMoveText;
	System::UnicodeString FArchiveText;
	Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* FBitmapContainer;
	System::UnicodeString FHeaderText;
	System::UnicodeString FFooterText;
	TTMSFMXTableViewItemOptions FItemOptions;
	TTMSFMXTableViewItemDetailEvent FOnItemBeforeDetail;
	TTMSFMXTableViewItemDetailEvent FOnItemAfterDetail;
	TTMSFMXTableViewItemDetailEvent FOnItemBeforeReturnDetail;
	TTMSFMXTableViewItemDetailEvent FOnItemAfterReturnDetail;
	TTMSFMXTableViewBeforeSearchEvent FOnBeforeSearch;
	TTMSFMXTableViewBeforeFilterEvent FOnBeforeFilter;
	TTMSFMXTableViewAfterSearchEvent FOnAfterSearch;
	TTMSFMXTableViewAfterFilterEvent FOnAfterFilter;
	TTMSFMXTableViewItemClickEvent FOnItemClick;
	Fmx::Controls::TControl* FDefaultDetailView;
	TTMSFMXTableViewCategoryClickEvent FOnCategoryClick;
	bool FShowFilterOnSwipe;
	TTMSFMXTableViewItemDetailEvent FOnBackButtonClick;
	Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent FOnFooterAnchorClick;
	TTMSFMXTableViewCategoryAnchorClickEvent FOnCategoryAnchorClick;
	TTMSFMXTableViewItemAnchorClickEvent FOnItemCaptionAnchorClick;
	TTMSFMXTableViewItemAnchorClickEvent FOnItemDescriptionAnchorClick;
	Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent FOnHeaderAnchorClick;
	int FBindingsCount;
	System::Classes::TNotifyEvent FOnSearchOpen;
	System::Classes::TNotifyEvent FOnSearchClose;
	void __fastcall SetItems(TTMSFMXTableViewItems* const Value);
	void __fastcall SetCategoryType(const TTMSFMXTableViewCategoryType Value);
	void __fastcall SetCategories(TTMSFMXTableViewCategories* const Value);
	void __fastcall SetAutoLoadBuffer(const bool Value);
	void __fastcall SetScrollIndicator(const TTMSFMXTableViewScrollIndicator Value);
	void __fastcall SetBufferSize(const int Value);
	void __fastcall SetLookupBar(const bool Value);
	void __fastcall SetAutoLookup(const bool Value);
	void __fastcall SetAutoToggleDetail(const bool Value);
	void __fastcall SetAutoDeleteItem(const bool Value);
	void __fastcall SetSelectedItemIndex(const int Value);
	void __fastcall SetMultiSelect(const bool Value);
	void __fastcall SetFiltering(const TTMSFMXTableViewFiltering Value);
	void __fastcall SetLayoutMode(const TTMSFMXTableViewLayoutMode Value);
	void __fastcall SetTopItem(const int Value);
	void __fastcall SetEditButton(const bool Value);
	void __fastcall SetBackButton(const bool Value);
	void __fastcall SetAutoFilter(const bool Value);
	void __fastcall SetShowFilter(const bool Value);
	void __fastcall SetArchiveText(const System::UnicodeString Value);
	void __fastcall SetMarkText(const System::UnicodeString Value);
	void __fastcall SetMoveText(const System::UnicodeString Value);
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	void __fastcall SetVersion(const System::UnicodeString Value);
	void __fastcall SetFooterText(const System::UnicodeString Value);
	void __fastcall SetHeaderText(const System::UnicodeString Value);
	void __fastcall SetItemOptions(const TTMSFMXTableViewItemOptions Value);
	void __fastcall SetDefaultDetailView(Fmx::Controls::TControl* const Value);
	void __fastcall SetShowFilterOnSwipe(const bool Value);
	
protected:
	virtual TTMSFMXTableViewItems* __fastcall CreateItems(void);
	__property int BindingsCount = {read=FBindingsCount, write=FBindingsCount, nodefault};
	void __fastcall ListMouseWheel(System::TObject* Sender, System::Classes::TShiftState Shift, int WheelDelta, bool &Handled);
	virtual void __fastcall DoEnter(void);
	virtual bool __fastcall CanObserve(const int ID);
	virtual void __fastcall Notification(System::Classes::TComponent* AComponent, System::Classes::TOperation Operation);
	virtual NativeUInt __fastcall GetInstance(void);
	void __fastcall UpdateEditButton(void);
	void __fastcall UpdateFilter(void);
	void __fastcall ShowBackButton(bool Show);
	void __fastcall HideBackButton(void);
	void __fastcall HideEditButton(void);
	void __fastcall ShowEditButton(void);
	void __fastcall UpdateEditButtons(void);
	void __fastcall EditButtonClick(System::TObject* Sender);
	float __fastcall GetLookUpBarWidth(void);
	bool __fastcall ClearDeleteButtons(TTMSFMXTableViewItem* AItem = (TTMSFMXTableViewItem*)(0x0));
	void __fastcall UpdateDefaultItemStyle(void);
	void __fastcall UpdateDefaultCategory(void);
	void __fastcall UpdateDefaultItem(void);
	int __fastcall GetItemIndexForIndex(int AIndex);
	int __fastcall GetCountItems(void);
	TTMSFMXTableViewItem* __fastcall GetItem(int I);
	bool __fastcall isFiltered(void);
	void __fastcall DoLoadPreviousBuffer(void);
	void __fastcall DoLoadNextBuffer(void);
	void __fastcall SetFocusOnBackGround(void);
	void __fastcall ListKeyDown(System::TObject* Sender, System::Word &Key, System::WideChar &KeyChar, System::Classes::TShiftState Shift);
	void __fastcall CloneChildren(Fmx::Types::TFmxObject* Source, Fmx::Types::TFmxObject* Destination);
	bool __fastcall CanClone(Fmx::Types::TFmxObject* Source);
	void __fastcall ScrollAnimationProcess(System::TObject* Sender);
	void __fastcall ScrollAnimationFinished(System::TObject* Sender);
	void __fastcall BackButtonAnimFinished(System::TObject* Sender);
	virtual void __fastcall ApplyStyle(void);
	void __fastcall AlignButtons(void);
	void __fastcall AssignEvents(void);
	void __fastcall AssignAnimations(void);
	void __fastcall StopScrollAnimation(void);
	void __fastcall StartScrollAnimation(void);
	void __fastcall ListMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall ListMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall ListMouseUp(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall ListDblClick(System::TObject* Sender);
	void __fastcall ListClick(System::TObject* Sender);
	void __fastcall ListMouseLeave(System::TObject* Sender);
	void __fastcall CleanUpItems(Fmx::Controls::TControl* innerelement);
	void __fastcall CleanUpCategories(Fmx::Controls::TControl* innerelement);
	void __fastcall InitCategories(void);
	void __fastcall InternalScrollItem(int AItemIndex, bool SelectItem = false, TTMSFMXTableViewSelectionMode ASelectionMode = (TTMSFMXTableViewSelectionMode)(0x0));
	void __fastcall ArchiveClick(System::TObject* Sender);
	void __fastcall MoveClick(System::TObject* Sender);
	void __fastcall MarkClick(System::TObject* Sender);
	void __fastcall BackButtonClick(System::TObject* Sender);
	void __fastcall InPlaceEditExit(System::TObject* Sender);
	void __fastcall SearchEditChanging(System::TObject* Sender);
	void __fastcall SearchEditChanged(System::TObject* Sender);
	void __fastcall UpdateFooterText(void);
	void __fastcall UpdateHeaderText(void);
	void __fastcall DoFilter(System::UnicodeString AFilter);
	TTMSFMXTableViewItemShape* __fastcall DoesItemExist(Fmx::Controls::TControl* innerelement, System::UnicodeString ItemName);
	TTMSFMXTableViewCategoryShape* __fastcall DoesCategoryExist(Fmx::Controls::TControl* innerelement, System::UnicodeString CategoryName);
	TTMSFMXTableViewItemShape* __fastcall AsItem(Fmx::Types::TFmxObject* AObject);
	TTMSFMXTableViewCategoryShape* __fastcall AsCategory(Fmx::Types::TFmxObject* AObject);
	bool __fastcall IsItem(Fmx::Types::TFmxObject* AObject);
	bool __fastcall IsCategory(Fmx::Types::TFmxObject* AObject);
	float __fastcall GetFullHeight(void);
	float __fastcall GetFullScrollBarHeight(void);
	float __fastcall GetCurrentPos(void);
	float __fastcall GetPositionTo(void);
	TTMSFMXTableViewCategoryShape* __fastcall FindCategoryWithCharacter(System::UnicodeString ACategory);
	TTMSFMXTableViewCategoryShape* __fastcall FindCategoryWithCharacterID(int ACategoryID);
	void __fastcall UpdateItemInplaceEdit(void);
	void __fastcall ShowInplaceEdit(void);
	void __fastcall HideInplaceEdit(void);
	void __fastcall UpdateCategoryPosition(void);
	void __fastcall UpdateListPosition(void);
	void __fastcall DeleteListItem(Fmx::Controls::TControl* itemElement);
	void __fastcall UpdateListItem(TTMSFMXTableViewItem* AItem, Fmx::Controls::TControl* itemElement, Fmx::Controls::TControl* defaultitemElement);
	void __fastcall AddListItem(TTMSFMXTableViewItem* AItem, Fmx::Controls::TControl* itemElement, Fmx::Controls::TControl* innerelement, float &Y);
	void __fastcall AddListCategory(TTMSFMXTableViewItem* AItem, Fmx::Controls::TControl* categoryElement, Fmx::Controls::TControl* innerelement, float &Y);
	void __fastcall ProcessItem(TTMSFMXTableViewItem* AItem, TTMSFMXTableViewSelectionMode ASelectionMode = (TTMSFMXTableViewSelectionMode)(0x0), bool ShowDetail = true);
	void __fastcall UpdateScrollBar(void);
	void __fastcall UpdateScrollBarVisuals(void);
	void __fastcall UpdateLookupBar(void);
	void __fastcall ShowScrollBar(void);
	void __fastcall HideScrollBar(void);
	void __fastcall NotifyObserver(void);
	void __fastcall UpdateTableViewItems(void);
	void __fastcall ResetBufferSize(void);
	void __fastcall ScrollToPosition(float APosition);
	int __fastcall GetCategoryIDForItem(TTMSFMXTableViewItem* AItem);
	void __fastcall PositionItem(TTMSFMXTableViewItem* AItem, bool OnTop = false);
	void __fastcall ScrollToCategoryId(int ACategoryID);
	void __fastcall ScrollToCategoryCharacter(System::UnicodeString ACharacter);
	void __fastcall ScrollToItem(TTMSFMXTableViewItem* AItem);
	void __fastcall DoAnchorClickHeader(System::TObject* Sender, System::UnicodeString AAnchor);
	void __fastcall DoAnchorClickFooter(System::TObject* Sender, System::UnicodeString AAnchor);
	void __fastcall DoAnchorClickCategory(System::TObject* Sender, System::UnicodeString AAnchor);
	
public:
	int __fastcall GetUpdateCount(void);
	TTMSFMXTableViewItem* __fastcall SelectedItem(void);
	int __fastcall CountSelected(void);
	__property int TopItem = {read=FTopItem, write=SetTopItem, nodefault};
	__fastcall virtual TTMSFMXTableView(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXTableView(void);
	virtual void __fastcall Assign(System::Classes::TPersistent* Source);
	virtual bool __fastcall ItemFromDifferentCategory(TTMSFMXTableViewItem* item1, TTMSFMXTableViewItem* item2);
	Fmx::Objects::TRectangle* __fastcall GetFooterRectangle(void);
	Fmx::Objects::TText* __fastcall GetFooterText(void);
	Fmx::Objects::TImage* __fastcall GetEditUncheckedDefaultImage(void);
	Fmx::Objects::TImage* __fastcall GetEditCheckedDefaultImage(void);
	Fmx::Objects::TImage* __fastcall GetItemDefaultDetailImage(void);
	Fmx::Objects::TText* __fastcall GetHeaderText(void);
	Fmx::Objects::TRectangle* __fastcall GetHeaderRectangle(void);
	Fmx::Objects::TRectangle* __fastcall GetFooterEditRectangle(void);
	Fmx::Objects::TRectangle* __fastcall GetItemDeleteRectangle(void);
	Fmx::Controls::TControl* __fastcall GetListDetailContainer(void);
	Fmx::Controls::TControl* __fastcall GetListContainer(void);
	Fmx::Controls::TControl* __fastcall GetCurrentListView(void);
	Fmx::Controls::TControl* __fastcall GetListBackGround(void);
	Fmx::Controls::TControl* __fastcall GetEditButton(void);
	Fmx::Controls::TControl* __fastcall GetBackButton(void);
	Fmx::Controls::TControl* __fastcall GetListPlaceHolder(void);
	Fmx::Controls::TControl* __fastcall GetDefaultItem(void);
	Fmx::Tmssearchedit::TTMSFMXSearchEdit* __fastcall GetSearchEdit(void);
	Fmx::Types::TAnimation* __fastcall GetBackButtonAnimation(void);
	Fmx::Types::TAnimation* __fastcall GetBackButtonOpacityAnimation(void);
	Fmx::Controls::TControl* __fastcall GetDefaultCategory(void);
	Fmx::Controls::TControl* __fastcall GetItemBulbRectangle(void);
	Fmx::Controls::TControl* __fastcall GetItemEditRectangle(void);
	Fmx::Controls::TControl* __fastcall GetItemLeftRectangle(void);
	Fmx::Controls::TControl* __fastcall GetItemDetailRectangle(void);
	Fmx::Objects::TText* __fastcall GetItemCaption(void);
	Fmx::Objects::TText* __fastcall GetItemDescription(void);
	Fmx::Controls::TControl* __fastcall GetItemRightRectangle(void);
	Fmx::Controls::TControl* __fastcall GetItemCenterRectangle(void);
	Fmx::Controls::TControl* __fastcall GetArchiveButton(void);
	Fmx::Controls::TControl* __fastcall GetMarkButton(void);
	Fmx::Controls::TControl* __fastcall GetMoveButton(void);
	Fmx::Controls::TControl* __fastcall GetHeaderSearch(void);
	Fmx::Tmssearchedit::TTMSFMXSearchEdit* __fastcall GetInPlaceEdit(void);
	Fmx::Controls::TControl* __fastcall GetLookupBar(void);
	int __fastcall GetBufferStop(void);
	int __fastcall GetBufferStart(void);
	Fmx::Controls::TControl* __fastcall GetScrollBar(void);
	Fmx::Types::TAnimation* __fastcall GetScrollBarAnimation(void);
	Fmx::Types::TAnimation* __fastcall GetDetailAnimation(void);
	Fmx::Types::TAnimation* __fastcall GetListDetailAnimation(void);
	Fmx::Types::TAnimation* __fastcall GetListScrollAnimation(void);
	TTMSFMXTableViewItem* __fastcall ItemAtXY(float X, float Y);
	System::UnicodeString __fastcall GetCharacterForItem(TTMSFMXTableViewItem* AItem);
	TTMSFMXTableViewItem* __fastcall FindItemWithFilter(System::UnicodeString AFilter);
	bool __fastcall IsItemInItemList(TTMSFMXTableViewItem* AItem);
	bool __fastcall IsItemVisibleInList(TTMSFMXTableViewItem* AItem);
	TTMSFMXTableViewItem* __fastcall FindFirstItemWithCategory(System::UnicodeString ACategory);
	TTMSFMXTableViewItem* __fastcall FindFirstItemWithCategoryID(int ACategoryID);
	bool __fastcall isEditMode(void);
	bool __fastcall isDetailMode(void);
	void __fastcall ToggleEditMode(bool AEditMode);
	void __fastcall EditMode(void);
	void __fastcall CancelEditMode(void);
	void __fastcall ApplyFilter(System::UnicodeString AFilter);
	void __fastcall UpdateTableView(void);
	virtual void __fastcall BeginUpdate(void);
	virtual void __fastcall EndUpdate(void);
	void __fastcall LoadNextBuffer(int ABufferSize = 0xffffffff);
	void __fastcall LoadPreviousBuffer(int ABufferSize = 0xffffffff);
	void __fastcall LoadBufferBetween(int BufferStart, int BufferStop);
	virtual void __fastcall Resize(void);
	void __fastcall UpdateDetailContainerGrid(void);
	void __fastcall LookupCustomCategory(int ACategoryID);
	void __fastcall LookupCategory(System::UnicodeString ACategory);
	void __fastcall LookupItem(int AItemIndex, bool SelectItem = false);
	void __fastcall DeSelectAllItems(void);
	void __fastcall SelectAllItems(void);
	void __fastcall SelectItemsBetween(int AStartIndex, int AStopIndex, bool AddToSelection = false);
	void __fastcall SelectItems(int *Selection, const int Selection_High, bool AddToSelection = false);
	__property Fmx::Controls::TControl* DetailContainer = {read=GetListDetailContainer};
	
__published:
	__property Fill;
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap = {default=0};
	__property StrokeDash = {default=0};
	__property StrokeJoin = {default=0};
	__property CanFocus = {default=0};
	__property TTMSFMXTableViewItemDetailEvent OnBackButtonClick = {read=FOnBackButtonClick, write=FOnBackButtonClick};
	__property bool AutoFilter = {read=FAutoFilter, write=SetAutoFilter, default=1};
	__property int SelectedItemIndex = {read=FSelectedItemIndex, write=SetSelectedItemIndex, default=-1};
	__property TTMSFMXTableViewItems* Items = {read=FItems, write=SetItems};
	__property TTMSFMXTableViewCategoryType CategoryType = {read=FCategoryType, write=SetCategoryType, default=0};
	__property TTMSFMXTableViewCategories* Categories = {read=FCategories, write=SetCategories};
	__property TTMSFMXTableViewItemCompareEvent OnItemCompare = {read=FOnItemCompare, write=FOnItemCompare};
	__property int BufferSize = {read=FBufferSize, write=SetBufferSize, default=50};
	__property bool AutoDeleteItem = {read=FAutoDeleteItem, write=SetAutoDeleteItem, default=1};
	__property bool AutoLoadBuffer = {read=FAutoLoadBuffer, write=SetAutoLoadBuffer, default=1};
	__property bool AutoLookup = {read=FAutoLookup, write=SetAutoLookup, default=1};
	__property bool AutoToggleDetail = {read=FAutoToggleDetail, write=SetAutoToggleDetail, default=1};
	__property TTMSFMXTableViewScrollIndicator ScrollIndicator = {read=FScrollIndicator, write=SetScrollIndicator, default=1};
	__property bool LookupBar = {read=FLookupBar, write=SetLookupBar, default=1};
	__property bool MultiSelect = {read=FMultiSelect, write=SetMultiSelect, default=0};
	__property TTMSFMXTableViewFiltering Filtering = {read=FFiltering, write=SetFiltering, default=2};
	__property bool ShowFilter = {read=FShowFilter, write=SetShowFilter, default=0};
	__property bool ShowFilterOnSwipe = {read=FShowFilterOnSwipe, write=SetShowFilterOnSwipe, default=1};
	__property TTMSFMXTableViewLayoutMode LayoutMode = {read=FLayoutMode, write=SetLayoutMode, default=0};
	__property bool EditButton = {read=FEditButton, write=SetEditButton, default=0};
	__property bool BackButton = {read=FBackButton, write=SetBackButton, default=1};
	__property System::UnicodeString MarkText = {read=FMarkText, write=SetMarkText};
	__property System::UnicodeString MoveText = {read=FMoveText, write=SetMoveText};
	__property System::UnicodeString ArchiveText = {read=FArchiveText, write=SetArchiveText};
	__property Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* BitmapContainer = {read=FBitmapContainer, write=FBitmapContainer};
	__property System::UnicodeString HeaderText = {read=FHeaderText, write=SetHeaderText};
	__property System::UnicodeString FooterText = {read=FFooterText, write=SetFooterText};
	__property TTMSFMXTableViewItemOptions ItemOptions = {read=FItemOptions, write=SetItemOptions, default=485};
	__property Fmx::Controls::TControl* DefaultDetailView = {read=FDefaultDetailView, write=SetDefaultDetailView};
	__property System::UnicodeString Version = {read=GetVersion, write=SetVersion};
	__property TTMSFMXTableViewAfterFilterEvent OnAfterFilter = {read=FOnAfterFilter, write=FOnAfterFilter};
	__property TTMSFMXTableViewBeforeFilterEvent OnBeforeFilter = {read=FOnBeforeFilter, write=FOnBeforeFilter};
	__property TTMSFMXTableViewAfterSearchEvent OnAfterSearch = {read=FOnAfterSearch, write=FOnAfterSearch};
	__property TTMSFMXTableViewBeforeSearchEvent OnBeforeSearch = {read=FOnBeforeSearch, write=FOnBeforeSearch};
	__property TTMSFMXTableViewItemDetailEvent OnItemBeforeDetail = {read=FOnItemBeforeDetail, write=FOnItemBeforeDetail};
	__property TTMSFMXTableViewItemDetailEvent OnItemAfterDetail = {read=FOnItemAfterDetail, write=FOnItemAfterDetail};
	__property TTMSFMXTableViewItemDetailEvent OnItemBeforeReturnDetail = {read=FOnItemBeforeReturnDetail, write=FOnItemBeforeReturnDetail};
	__property TTMSFMXTableViewItemDetailEvent OnItemAfterReturnDetail = {read=FOnItemAfterReturnDetail, write=FOnItemAfterReturnDetail};
	__property System::Classes::TNotifyEvent OnManualLoadNextBuffer = {read=FOnManualLoadNextBuffer, write=FOnManualLoadNextBuffer};
	__property System::Classes::TNotifyEvent OnManualLoadPreviousBuffer = {read=FOnManualLoadPreviousBuffer, write=FOnManualLoadPreviousBuffer};
	__property TTMSFMXTableViewLookUpEvent OnManualLookup = {read=FOnManualLookUp, write=FOnManualLookUp};
	__property TTMSFMXTableViewItemDeleteButton OnItemDelete = {read=FOnItemDelete, write=FOnItemDelete};
	__property TTMSFMXTableViewItemSelectEvent OnItemSelected = {read=FOnItemSelected, write=FOnItemSelected};
	__property TTMSFMXTableViewItemClickEvent OnItemClick = {read=FOnItemClick, write=FOnItemClick};
	__property TTMSFMXTableViewCustomizeItemEvent OnItemData = {read=FOnItemData, write=FOnItemData};
	__property TTMSFMXTableViewCustomizeDetailAnimations OnAnimationCustomize = {read=FOnAnimationCustomize, write=FOnAnimationCustomize};
	__property TTMSFMXTableViewCustomizeItemEvent OnItemCustomize = {read=FOnItemCustomize, write=FOnItemCustomize};
	__property TTMSFMXTableViewCustomizeCategoryEvent OnCategoryCustomize = {read=FOnCategoryCustomize, write=FOnCategoryCustomize};
	__property TTMSFMXTableViewCategoryClickEvent OnCategoryClick = {read=FOnCategoryClick, write=FOnCategoryClick};
	__property TTMSFMXTableViewItemBeforeDrawEvent OnItemBeforeDraw = {read=FOnItemBeforeDraw, write=FOnItemBeforeDraw};
	__property TTMSFMXTableViewItemAfterDrawEvent OnItemAfterDraw = {read=FOnItemAfterDraw, write=FOnItemAfterDraw};
	__property TTMSFMXTableViewScrollingEvent OnScroll = {read=FOnScroll, write=FOnScroll};
	__property TTMSFMXTableViewScrollingEvent OnScrollFinished = {read=FOnScrollFinished, write=FOnScrollFinished};
	__property System::Classes::TNotifyEvent OnMoveClick = {read=FOnMoveClick, write=FOnMoveClick};
	__property System::Classes::TNotifyEvent OnMarkClick = {read=FOnMarkClick, write=FOnMarkClick};
	__property TTMSFMXTableViewArchiveEvent OnArchiveClick = {read=FOnArchiveClick, write=FOnArchiveClick};
	__property Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent OnHeaderAnchorClick = {read=FOnHeaderAnchorClick, write=FOnHeaderAnchorClick};
	__property Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent OnFooterAnchorClick = {read=FOnFooterAnchorClick, write=FOnFooterAnchorClick};
	__property TTMSFMXTableViewItemAnchorClickEvent OnItemCaptionAnchorClick = {read=FOnItemCaptionAnchorClick, write=FOnItemCaptionAnchorClick};
	__property TTMSFMXTableViewItemAnchorClickEvent OnItemDescriptionAnchorClick = {read=FOnItemDescriptionAnchorClick, write=FOnItemDescriptionAnchorClick};
	__property TTMSFMXTableViewCategoryAnchorClickEvent OnCategoryAnchorClick = {read=FOnCategoryAnchorClick, write=FOnCategoryAnchorClick};
	__property System::Classes::TNotifyEvent OnSearchOpen = {read=FOnSearchOpen, write=FOnSearchOpen};
	__property System::Classes::TNotifyEvent OnSearchClose = {read=FOnSearchClose, write=FOnSearchClose};
};


//-- 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(0x8);
static const System::Int8 CLICKMARGIN = System::Int8(0x4);
static const System::Int8 SWIPEMARGIN = System::Int8(0x7);
#define AllItemOptions (System::Set<TTMSFMXTableViewItemOption, TTMSFMXTableViewItemOption::ioEditRectangle, TTMSFMXTableViewItemOption::ioDescriptionElement>() << TTMSFMXTableViewItemOption::ioEditRectangle << TTMSFMXTableViewItemOption::ioCenterRectangle << TTMSFMXTableViewItemOption::ioDetailRectangle << TTMSFMXTableViewItemOption::ioDeleteRectangle << TTMSFMXTableViewItemOption::ioCaptionElement << TTMSFMXTableViewItemOption::ioDescriptionElement )
extern DELPHI_PACKAGE unsigned __fastcall GetTickCountX(void);
extern DELPHI_PACKAGE System::UnicodeString __fastcall GetStrippedHTMLText(const System::Types::TRectF &ARect, Fmx::Graphics::TCanvas* ACanvas, System::UnicodeString AString);
}	/* namespace Tmstableview */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSTABLEVIEW)
using namespace Fmx::Tmstableview;
#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_TmstableviewHPP
