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

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

#ifndef Fmx_TmslistviewHPP
#define Fmx_TmslistviewHPP

#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.UITypes.hpp>	// Pascal unit
#include <System.Rtti.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.Variants.hpp>	// Pascal unit
#include <FMX.Types.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit
#include <FMX.Forms.hpp>	// Pascal unit
#include <FMX.Dialogs.hpp>	// Pascal unit
#include <FMX.StdCtrls.hpp>	// Pascal unit
#include <FMX.Layouts.hpp>	// Pascal unit
#include <FMX.Grid.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Tmslistview
{
//-- type declarations -------------------------------------------------------
typedef void * TCustomData;

typedef System::TMetaClass* TListItemClass;

class DELPHICLASS TListItem;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TListItem : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	System::Classes::TStringList* FSubItems;
	System::UnicodeString FText;
	bool FChecked;
	void *FData;
	void __fastcall SetSubItems(System::Classes::TStringList* Value);
	void __fastcall SetText(const System::UnicodeString Value);
	void __fastcall SetChecked(const bool Value);
	void __fastcall SetState(const bool Value);
	bool __fastcall GetState(void);
	
protected:
	void __fastcall SubItemsChanged(System::TObject* Sender);
	
public:
	__fastcall virtual TListItem(System::Classes::TCollection* Collection);
	__fastcall virtual ~TListItem(void);
	__property bool Checked = {read=FChecked, write=SetChecked, nodefault};
	__property void * Data = {read=FData, write=FData};
	__property bool Selected = {read=GetState, write=SetState, nodefault};
	
__published:
	__property System::UnicodeString Text = {read=FText, write=SetText};
	__property System::Classes::TStringList* SubItems = {read=FSubItems, write=SetSubItems};
};

#pragma pack(pop)

typedef void __fastcall (__closure *TItemChangeEvent)(System::TObject* Sender, int Index);

typedef void __fastcall (__closure *TListViewItemEvent)(System::TObject* Sender, TListItem* Item);

class DELPHICLASS TListItems;
class DELPHICLASS TTMSFMXListView;
class PASCALIMPLEMENTATION TListItems : public System::Classes::TOwnedCollection
{
	typedef System::Classes::TOwnedCollection inherited;
	
public:
	TListItem* operator[](int Index) { return Items[Index]; }
	
private:
	TItemChangeEvent FOnChanged;
	TListItem* __fastcall GetItems(int Index);
	void __fastcall SetItems(int Index, TListItem* const Value);
	
protected:
	virtual void __fastcall Update(System::Classes::TCollectionItem* Item);
	
public:
	__fastcall TListItems(TTMSFMXListView* AOwner);
	__fastcall virtual ~TListItems(void);
	__property TListItem* Items[int Index] = {read=GetItems, write=SetItems/*, default*/};
	HIDESBASE TListItem* __fastcall Add(void);
	__property TItemChangeEvent OnChanged = {read=FOnChanged, write=FOnChanged};
};


class DELPHICLASS TListColumn;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TListColumn : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	System::UnicodeString FCaption;
	int FTag;
	void __fastcall SetCaption(const System::UnicodeString Value);
	
__published:
	__property System::UnicodeString Caption = {read=FCaption, write=SetCaption};
	__property int Tag = {read=FTag, write=FTag, nodefault};
public:
	/* TCollectionItem.Create */ inline __fastcall virtual TListColumn(System::Classes::TCollection* Collection) : System::Classes::TCollectionItem(Collection) { }
	/* TCollectionItem.Destroy */ inline __fastcall virtual ~TListColumn(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TListColumns;
class PASCALIMPLEMENTATION TListColumns : public System::Classes::TOwnedCollection
{
	typedef System::Classes::TOwnedCollection inherited;
	
public:
	TListColumn* operator[](int Index) { return Items[Index]; }
	
private:
	System::Classes::TNotifyEvent FOnChange;
	TListColumn* __fastcall GetItems(int Index);
	void __fastcall SetItems(int Index, TListColumn* const Value);
	
protected:
	virtual void __fastcall Update(System::Classes::TCollectionItem* Item);
	
public:
	__fastcall TListColumns(System::Classes::TComponent* AOwner);
	__property System::Classes::TNotifyEvent OnChanged = {read=FOnChange, write=FOnChange};
	HIDESBASE TListColumn* __fastcall Add(void);
	HIDESBASE TListColumn* __fastcall Insert(int Index);
	__property TListColumn* Items[int Index] = {read=GetItems, write=SetItems/*, default*/};
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TListColumns(void) { }
	
};


class PASCALIMPLEMENTATION TTMSFMXListView : public Fmx::Grid::TGrid
{
	typedef Fmx::Grid::TGrid inherited;
	
private:
	TListColumns* FColumns;
	TListItems* FItems;
	bool FRowSelect;
	TListViewItemEvent FOnItemChecked;
	System::Classes::TNotifyEvent FOnChange;
	int FItemIndex;
	void __fastcall SetColumns(TListColumns* const Value);
	void __fastcall ColumnsChanged(System::TObject* Sender);
	void __fastcall ItemChanged(System::TObject* Sender, int Index);
	void __fastcall SetItems(TListItems* const Value);
	void __fastcall SetRowSelect(const bool Value);
	TListItem* __fastcall GetSelected(void);
	void __fastcall SetSelectedEx(TListItem* const Value);
	void __fastcall SetItemIndex(const int Value);
	int __fastcall GetItemIndex(void);
	
protected:
	virtual System::Rtti::TValue __fastcall GetValue(int Col, int Row);
	virtual void __fastcall SetValue(int Col, int Row, const System::Rtti::TValue &Value);
	virtual void __fastcall DoItemChecked(TListItem* Item);
	virtual void __fastcall DoSelChanged(void);
	
public:
	__fastcall virtual TTMSFMXListView(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXListView(void);
	virtual void __fastcall Loaded(void);
	__property TListItem* Selected = {read=GetSelected, write=SetSelectedEx};
	
__published:
	__property int ItemIndex = {read=GetItemIndex, write=SetItemIndex, default=-1};
	__property TListColumns* Columns = {read=FColumns, write=SetColumns};
	__property TListItems* Items = {read=FItems, write=SetItems};
	__property bool RowSelect = {read=FRowSelect, write=SetRowSelect, default=0};
	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
	__property TListViewItemEvent OnItemChecked = {read=FOnItemChecked, write=FOnItemChecked};
};


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