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

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

#ifndef Fmx_TmsgriddatabindingHPP
#define Fmx_TmsgriddatabindingHPP

#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.TMSGrid.hpp>	// Pascal unit
#include <FMX.TMSGridData.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <Fmx.Bind.DBLinks.hpp>	// Pascal unit
#include <System.Math.hpp>	// Pascal unit
#include <System.UITypes.hpp>	// Pascal unit
#include <System.Bindings.EvalProtocol.hpp>	// Pascal unit
#include <Data.Bind.Components.hpp>	// Pascal unit
#include <Data.Bind.Editors.hpp>	// Pascal unit
#include <System.Bindings.ObjEval.hpp>	// Pascal unit
#include <FMX.Dialogs.hpp>	// Pascal unit
#include <System.SysUtils.hpp>	// Pascal unit
#include <FMX.Types.hpp>	// Pascal unit
#include <FMX.Edit.hpp>	// Pascal unit
#include <FMX.ExtCtrls.hpp>	// Pascal unit
#include <FMX.ListBox.hpp>	// Pascal unit
#include <Data.Bind.Grid.hpp>	// Pascal unit
#include <Data.DB.hpp>	// Pascal unit
#include <Data.Bind.ObjectScope.hpp>	// Pascal unit
#include <Data.Bind.DBScope.hpp>	// Pascal unit
#include <Fmx.Bind.Grid.hpp>	// Pascal unit
#include <System.Generics.Collections.hpp>	// Pascal unit
#include <FMX.Colors.hpp>	// Pascal unit
#include <System.UIConsts.hpp>	// Pascal unit
#include <FMX.Graphics.hpp>	// Pascal unit
#include <FMX.DateTimeCtrls.hpp>	// Pascal unit
#include <FMX.TMSCustomGrid.hpp>	// Pascal unit
#include <FMX.TMSBaseControl.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Tmsgriddatabinding
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TTMSFMXProtectedGrid;
class PASCALIMPLEMENTATION TTMSFMXProtectedGrid : public Fmx::Tmsgrid::TTMSFMXGrid
{
	typedef Fmx::Tmsgrid::TTMSFMXGrid inherited;
	
public:
	/* TTMSFMXGrid.Create */ inline __fastcall virtual TTMSFMXProtectedGrid(System::Classes::TComponent* AOwner) : Fmx::Tmsgrid::TTMSFMXGrid(AOwner) { }
	/* TTMSFMXGrid.Destroy */ inline __fastcall virtual ~TTMSFMXProtectedGrid(void) { }
	
};


class DELPHICLASS TTMSFMXBindDBGridLink;
class PASCALIMPLEMENTATION TTMSFMXBindDBGridLink : public Data::Bind::Components::TBindGridLink
{
	typedef Data::Bind::Components::TBindGridLink inherited;
	
public:
	__fastcall virtual TTMSFMXBindDBGridLink(System::Classes::TComponent* AOwner);
public:
	/* TCustomBindGridLink.Destroy */ inline __fastcall virtual ~TTMSFMXBindDBGridLink(void) { }
	
};


class DELPHICLASS TTMSFMXGridItemEditorObject;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXGridItemEditorObject : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	Fmx::Tmsgrid::TTMSFMXGrid* FGrid;
	int FIndex;
	Fmx::Tmsgrid::TTMSFMXGrid* __fastcall GetOwner(void);
	System::UnicodeString __fastcall GetCells(int ACol);
	void __fastcall SetCells(int ACol, const System::UnicodeString Value);
	Fmx::Graphics::TBitmap* __fastcall GetBitmaps(int ACol);
	void __fastcall SetBitmaps(int ACol, Fmx::Graphics::TBitmap* const Value);
	bool __fastcall GetBooleans(int ACol);
	void __fastcall SetBooleans(int ACol, const bool Value);
	System::Uitypes::TAlphaColor __fastcall GetAlphaColors(int ACol);
	void __fastcall SetAlphaColors(int ACol, const System::Uitypes::TAlphaColor Value);
	System::Uitypes::TColor __fastcall GetColors(int ACol);
	void __fastcall SetColors(int ACol, const System::Uitypes::TColor Value);
	
public:
	__property Fmx::Tmsgrid::TTMSFMXGrid* Owner = {read=GetOwner};
	__property System::Uitypes::TAlphaColor AlphaColors[int ACol] = {read=GetAlphaColors, write=SetAlphaColors};
	__property System::Uitypes::TColor Colors[int ACol] = {read=GetColors, write=SetColors};
	__property System::UnicodeString Cells[int ACol] = {read=GetCells, write=SetCells};
	__property Fmx::Graphics::TBitmap* Bitmaps[int ACol] = {read=GetBitmaps, write=SetBitmaps};
	__property bool Booleans[int ACol] = {read=GetBooleans, write=SetBooleans};
public:
	/* TObject.Create */ inline __fastcall TTMSFMXGridItemEditorObject(void) : System::TObject() { }
	/* TObject.Destroy */ inline __fastcall virtual ~TTMSFMXGridItemEditorObject(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXBindGridEditor;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXBindGridEditor : public Data::Bind::Editors::TBindGridEditor
{
	typedef Data::Bind::Editors::TBindGridEditor inherited;
	
private:
	int FUpdateCounter;
	TTMSFMXGridItemEditorObject* FEditorObject;
	bool __fastcall IsEmpty(void);
	int __fastcall GetFixedRows(void);
	int __fastcall GetFixedCols(void);
	int __fastcall GetRowIndex(void);
	int __fastcall GetColumnIndex(void);
	
protected:
	virtual void __fastcall BeginUpdate(void);
	virtual void __fastcall EndUpdate(void);
	virtual System::Bindings::Evalprotocol::_di_IScope __fastcall AddItem(bool Select);
	virtual bool __fastcall CanInsertItem(void);
	virtual System::Bindings::Evalprotocol::_di_IScope __fastcall InsertItem(bool Select);
	virtual System::Bindings::Evalprotocol::_di_IScope __fastcall CurrentItem(void);
	virtual int __fastcall GetRowCount(void);
	virtual bool __fastcall MoveNext(void);
	virtual void __fastcall DeleteToEnd(void);
	virtual void __fastcall ClearList(void);
	virtual System::UnicodeString __fastcall GetSelectedText(void);
	virtual void __fastcall SetSelectedText(const System::UnicodeString AValue);
	virtual void __fastcall GetColumnIndices(System::Classes::TStrings* ANames);
	virtual void __fastcall GetColumnNames(System::Classes::TStrings* ANames);
	virtual bool __fastcall GetPositionGetter(System::UnicodeString &AGetter, int &ABase);
	virtual bool __fastcall GetPositionSetter(System::UnicodeString &ASetter, int &ABase);
	virtual System::TObject* __fastcall CurrentObject(void);
	virtual int __fastcall CurrentIndex(void);
	
public:
	__fastcall TTMSFMXBindGridEditor(Fmx::Tmsgrid::TTMSFMXGrid* AGrid);
	__fastcall virtual ~TTMSFMXBindGridEditor(void);
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXBindGridEditorFactory;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXBindGridEditorFactory : public Data::Bind::Components::TBindEditorFactory
{
	typedef Data::Bind::Components::TBindEditorFactory inherited;
	
public:
	__fastcall virtual TTMSFMXBindGridEditorFactory(void);
	virtual bool __fastcall Supports(const GUID &AIntf, System::TObject* AObject);
	virtual System::_di_IInterface __fastcall CreateEditor(const GUID &AIntf, System::TObject* AObject);
public:
	/* TObject.Destroy */ inline __fastcall virtual ~TTMSFMXBindGridEditorFactory(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXBaseLinkGridToDataSourceControlManager;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXBaseLinkGridToDataSourceControlManager : public System::TInterfacedObject
{
	typedef System::TInterfacedObject inherited;
	
private:
	Fmx::Tmsgrid::TTMSFMXGrid* FGrid;
	int FDefaultColumnWidth;
	int __fastcall AddColumn(const Data::Bind::Grid::TCreateColumnDescription &ADescription)/* overload */;
	Data::Bind::Grid::TLinkGridColumnDescription* __fastcall DescribeColumn(int AIndex, const Data::Bind::Grid::TCreateColumnDescription &ADescription)/* overload */;
	void __fastcall UpdateColumn(int AIndex, const Data::Bind::Grid::TCreateColumnDescription &ACreateDescription)/* overload */;
	
protected:
	virtual System::UnicodeString __fastcall FormatCellDataExpression(int AIndex) = 0 ;
	virtual bool __fastcall SupportsMemberType(Data::Bind::Components::TScopeMemberType AMemberType, System::UnicodeString &ALiteralExpression);
	virtual Data::Bind::Grid::TLinkGridColumnDescription* __fastcall CreateColumnDescription(int AIndex, const Data::Bind::Grid::TCreateColumnDescription &ADescription);
	virtual System::Classes::TComponentClass __fastcall GetColumnClass(const Data::Bind::Grid::TCreateColumnDescription &ADescription);
	void __fastcall BeginUpdate(void);
	void __fastcall EndUpdate(void);
	int __fastcall GetDefaultColumnWidth(void);
	void __fastcall SetDefaultColumnWidth(int AWidth);
	bool __fastcall CanAddColumn(Data::Bind::Grid::TBaseLinkGridToDataSourceColumn* AColumn)/* overload */;
	bool __fastcall CanAddColumn(Data::Bind::Components::TBaseLinkingBindSource* ADataSource, const System::UnicodeString AMemberName)/* overload */;
	void __fastcall ClearColumns(void);
	Data::Bind::Grid::TLinkGridColumnDescription* __fastcall DescribeColumn(int AIndex, Data::Bind::Grid::TBaseLinkGridToDataSourceColumn* AColumn)/* overload */;
	Data::Bind::Grid::TLinkGridColumnDescription* __fastcall DescribeColumn(int AIndex, Data::Bind::Components::TBaseLinkingBindSource* ADataSource, const System::UnicodeString AMemberName)/* overload */;
	int __fastcall AddColumn(Data::Bind::Grid::TBaseLinkGridToDataSourceColumn* AColumn)/* overload */;
	int __fastcall AddColumn(Data::Bind::Components::TBaseLinkingBindSource* ADataSource, const System::UnicodeString AMemberName)/* overload */;
	void __fastcall UpdateColumn(int AIndex, Data::Bind::Grid::TBaseLinkGridToDataSourceColumn* AColumn)/* overload */;
	void __fastcall UpdateColumn(int AIndex, Data::Bind::Components::TBaseLinkingBindSource* ADataSource, const System::UnicodeString AMemberName)/* overload */;
	bool __fastcall GetPositionGetter(System::UnicodeString &AGetter, int &ABase);
	bool __fastcall GetPositionSetter(System::UnicodeString &ASetter, int &ABase);
	
public:
	__fastcall TTMSFMXBaseLinkGridToDataSourceControlManager(Fmx::Tmsgrid::TTMSFMXGrid* AGrid);
public:
	/* TObject.Destroy */ inline __fastcall virtual ~TTMSFMXBaseLinkGridToDataSourceControlManager(void) { }
	
private:
	void *__ILinkGridToDataSourceControlManager;	// Data::Bind::Grid::ILinkGridToDataSourceControlManager 
	
public:
	#if defined(MANAGED_INTERFACE_OPERATORS)
	// {F631C178-78F7-4164-A532-6F335760A26A}
	operator Data::Bind::Grid::_di_ILinkGridToDataSourceControlManager()
	{
		Data::Bind::Grid::_di_ILinkGridToDataSourceControlManager intf;
		GetInterface(intf);
		return intf;
	}
	#else
	operator Data::Bind::Grid::ILinkGridToDataSourceControlManager*(void) { return (Data::Bind::Grid::ILinkGridToDataSourceControlManager*)&__ILinkGridToDataSourceControlManager; }
	#endif
	
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXLinkGridToDataSourceColumnFactory;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXLinkGridToDataSourceColumnFactory : public Data::Bind::Grid::TLinkGridToDataSourceColumnFactory
{
	typedef Data::Bind::Grid::TLinkGridToDataSourceColumnFactory inherited;
	
public:
	virtual System::UnicodeString __fastcall FrameworkExt(void);
	virtual System::DynamicArray<System::Classes::TComponentClass> __fastcall GridClasses(void);
	virtual System::DynamicArray<System::UnicodeString> __fastcall UsesUnits(void);
	virtual bool __fastcall Supports(const GUID &AIntf, System::Classes::TComponent* AGrid);
	virtual System::_di_IInterface __fastcall CreateFactory(const GUID &AIntf, System::Classes::TComponent* AGrid);
public:
	/* TLinkGridToDataSourceColumnFactory.Create */ inline __fastcall virtual TTMSFMXLinkGridToDataSourceColumnFactory(void) : Data::Bind::Grid::TLinkGridToDataSourceColumnFactory() { }
	
public:
	/* TObject.Destroy */ inline __fastcall virtual ~TTMSFMXLinkGridToDataSourceColumnFactory(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXLinkGridToDataSourceControlManager;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXLinkGridToDataSourceControlManager : public TTMSFMXBaseLinkGridToDataSourceControlManager
{
	typedef TTMSFMXBaseLinkGridToDataSourceControlManager inherited;
	
private:
	Fmx::Tmsgrid::TTMSFMXGrid* FGrid;
	
protected:
	virtual System::UnicodeString __fastcall FormatCellDataExpression(int AIndex);
	virtual bool __fastcall SupportsMemberType(Data::Bind::Components::TScopeMemberType AMemberType, System::UnicodeString &ALiteralExpression);
	
public:
	__fastcall TTMSFMXLinkGridToDataSourceControlManager(Fmx::Tmsgrid::TTMSFMXGrid* AGrid);
public:
	/* TObject.Destroy */ inline __fastcall virtual ~TTMSFMXLinkGridToDataSourceControlManager(void) { }
	
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
}	/* namespace Tmsgriddatabinding */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSGRIDDATABINDING)
using namespace Fmx::Tmsgriddatabinding;
#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_TmsgriddatabindingHPP
