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

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

#ifndef Fmx_UxlsrowcolentriesHPP
#define Fmx_UxlsrowcolentriesHPP

#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 <FMX.UXlsBaseRecords.hpp>	// Pascal unit
#include <FMX.UXlsBaseRecordLists.hpp>	// Pascal unit
#include <FMX.UXlsOtherRecords.hpp>	// Pascal unit
#include <FMX.XlsMessages.hpp>	// Pascal unit
#include <FMX.UXlsRangeRecords.hpp>	// Pascal unit
#include <FMX.UXlsBaseList.hpp>	// Pascal unit
#include <FMX.UXlsCellRecords.hpp>	// Pascal unit
#include <FMX.UXlsFormula.hpp>	// Pascal unit
#include <System.Variants.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit
#include <FMX.UXlsSST.hpp>	// Pascal unit
#include <FMX.UFlxMessages.hpp>	// Pascal unit
#include <FMX.UXlsColInfo.hpp>	// Pascal unit
#include <FMX.UXlsReferences.hpp>	// Pascal unit
#include <FMX.UXlsWorkbookGlobals.hpp>	// Pascal unit
#include <FMX.UXlsTokenArray.hpp>	// Pascal unit
#include <FMX.XlsFormulaMessages.hpp>	// Pascal unit
#include <FMX.UFlxNumberFormat.hpp>	// Pascal unit
#include <FMX.Types.hpp>	// Pascal unit
#include <FMX.UFlxFormats.hpp>	// Pascal unit
#include <FMX.UOle2Impl.hpp>	// Pascal unit
#include <System.Contnrs.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Uxlsrowcolentries
{
//-- type declarations -------------------------------------------------------
typedef System::TMetaClass* TListClass;

typedef System::DynamicArray<Fmx::Uflxformats::TFlxFont> TFlxFontArray;

typedef System::DynamicArray<int> TIntegerArray;

class DELPHICLASS TColWidthCalc;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TColWidthCalc : public System::TObject
{
	typedef System::TObject inherited;
	
public:
	__fastcall TColWidthCalc(Fmx::Uxlsworkbookglobals::TWorkbookGlobals* const aWg);
	int __fastcall CalcCellWidth(const int Row, const int Col, const Fmx::Uflxmessages::TRichString &val, const int XF, const void * Workbook, const System::Extended RowMultDisplay, const System::Extended ColMultDisplay);
	__fastcall virtual ~TColWidthCalc(void);
};

#pragma pack(pop)

class DELPHICLASS TBaseRowColList;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TBaseRowColList : public Fmx::Uxlsbaselist::TBaseList
{
	typedef Fmx::Uxlsbaselist::TBaseList inherited;
	
public:
	Fmx::Uxlsbaserecordlists::TBaseRowColRecordList* operator[](int index) { return Items[index]; }
	
private:
	Fmx::Uxlsbaserecordlists::TBaseRowColRecordList* __fastcall GetItems(int index);
	void __fastcall SetItems(int index, Fmx::Uxlsbaserecordlists::TBaseRowColRecordList* const Value);
	
public:
	__property Fmx::Uxlsbaserecordlists::TBaseRowColRecordList* Items[int index] = {read=GetItems, write=SetItems/*, default*/};
	HIDESBASE int __fastcall Add(Fmx::Uxlsbaserecordlists::TBaseRowColRecordList* aRecord);
	HIDESBASE void __fastcall Insert(int Index, Fmx::Uxlsbaserecordlists::TBaseRowColRecordList* aRecord);
	
protected:
	TListClass ListClass;
	
public:
	void __fastcall AddRecord(Fmx::Uxlsbaserecords::TBaseRowColRecord* const aRecord, const int aRow);
	void __fastcall CopyFrom(TBaseRowColList* const aList);
	void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const DataStream);
	void __fastcall SaveRangeToStream(Fmx::Uole2impl::TOle2File* const DataStream, const Fmx::Uflxmessages::TXlsCellRange &CellRange);
	__int64 __fastcall TotalSize(void);
	__int64 __fastcall TotalRangeSize(const Fmx::Uflxmessages::TXlsCellRange &CellRange);
	void __fastcall InsertAndCopyRows(const int FirstRow, const int LastRow, const int DestRow, const int aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, const bool OnlyFormulas);
	virtual void __fastcall InsertAndCopyCols(const int FirstCol, const int LastCol, const int DestCol, const int aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, const bool OnlyFormulas);
	void __fastcall DeleteRows(const System::Word aRow, const System::Word aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall DeleteCols(const System::Word aCol, const System::Word aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	virtual void __fastcall ArrangeInsertRowsAndCols(const int InsRowPos, const int InsRowCount, const int InsColPos, const int InsColCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	__fastcall TBaseRowColList(const TListClass aListClass);
public:
	/* TList.Destroy */ inline __fastcall virtual ~TBaseRowColList(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TCellList;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TCellList : public TBaseRowColList
{
	typedef TBaseRowColList inherited;
	
public:
	Fmx::Uxlsbaserecordlists::TCellRecordList* operator[](int index) { return Items[index]; }
	
private:
	Fmx::Uxlsworkbookglobals::TWorkbookGlobals* FGlobals;
	Fmx::Uxlsbaserecordlists::TRowRecordList* FRowRecordList;
	Fmx::Uxlscolinfo::TColInfoList* FColInfoList;
	Fmx::Uflxmessages::TXlsCellValue __fastcall GetValue(int Row, int Col);
	void __fastcall FixFormulaTokens(Fmx::Uxlsformula::TFormulaRecord* const Formula, Fmx::Uxlsbaserecordlists::TShrFmlaRecordList* const ShrFmlas);
	System::UnicodeString __fastcall GetFormula(int Row, int Col);
	void __fastcall SetFormula(int Row, int Col, const System::UnicodeString Value);
	void __fastcall AutofitColumn(const void * Workbook, const int Column, TColWidthCalc* const ColCalc, const System::Extended RowMultDisplay, const System::Extended ColMultDisplay, const bool IgnoreStrings, const System::Extended Adjustment);
	HIDESBASE Fmx::Uxlsbaserecordlists::TCellRecordList* __fastcall GetItems(int index);
	HIDESBASE void __fastcall SetItems(int index, Fmx::Uxlsbaserecordlists::TCellRecordList* const Value);
	
public:
	__property Fmx::Uxlsbaserecordlists::TCellRecordList* Items[int index] = {read=GetItems, write=SetItems/*, default*/};
	HIDESBASE int __fastcall Add(Fmx::Uxlsbaserecordlists::TCellRecordList* aRecord);
	HIDESBASE void __fastcall Insert(int Index, Fmx::Uxlsbaserecordlists::TCellRecordList* aRecord);
	__fastcall TCellList(Fmx::Uxlsworkbookglobals::TWorkbookGlobals* const aGlobals, Fmx::Uxlsbaserecordlists::TRowRecordList* const aRowRecordList, Fmx::Uxlscolinfo::TColInfoList* const aColInfoList);
	__property Fmx::Uflxmessages::TXlsCellValue Value[int Row][int Col] = {read=GetValue};
	void __fastcall SetValueX2(const int Row, const int Col, const Fmx::Uflxmessages::TXlsCellValue &Value, const Fmx::Uflxmessages::TRTFRunList RTFRuns, const bool Options1904);
	void __fastcall GetValueX2(const int Row, const int Col, /* out */ Fmx::Uflxmessages::TXlsCellValue &V, /* out */ Fmx::Uflxmessages::TRTFRunList &RTFRuns);
	void __fastcall SetFormat(const int Row, const int Col, const int XF);
	__property System::UnicodeString Formula[int Row][int Col] = {read=GetFormula, write=SetFormula};
	void __fastcall AssignFormulaX(const int Row, const int Col, const System::UnicodeString Formula, const System::Variant &Value, const bool Options1904);
	Fmx::Xlsmessages::PArrayOfByte __fastcall ArrayFormula(const int Row, const int Col);
	Fmx::Xlsmessages::PArrayOfByte __fastcall TableFormula(const int Row, const int Col);
	void __fastcall FixFormulas(Fmx::Uxlsbaserecordlists::TShrFmlaRecordList* const ShrFmlas);
	System::UnicodeString __fastcall GetSheetName(const int SheetNumber);
	int __fastcall AddExternSheet(const int FirstSheet, const int LastSheet);
	bool __fastcall FindSheet(System::UnicodeString SheetName, /* out */ int &SheetIndex);
	virtual void __fastcall InsertAndCopyCols(const int FirstCol, const int LastCol, const int DestCol, const int aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, const bool OnlyFormulas);
	virtual void __fastcall ArrangeInsertRowsAndCols(const int InsRowPos, const int InsRowCount, const int InsColPos, const int InsColCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall ArrangeInsertSheet(const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	System::UnicodeString __fastcall GetName(const int ExternSheet, const int NameId);
	void __fastcall RecalcColWidths(const void * Workbook, const int Col1, const int Col2, const bool IgnoreStrings, const System::Extended Adjustment);
	void __fastcall RecalcRowHeights(const void * Workbook, const int Row1, const int Row2, const bool Forced, const bool KeepAutofit, const System::Extended Adjustment);
	__int64 __fastcall FixTotalSize(const bool NeedsRecalc);
public:
	/* TList.Destroy */ inline __fastcall virtual ~TCellList(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TCells;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TCells : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	Fmx::Uxlsbaserecordlists::TRowRecordList* FRowList;
	TCellList* FCellList;
	void __fastcall WriteDimensions(Fmx::Uole2impl::TOle2File* const DataStream, const Fmx::Uflxmessages::TXlsCellRange &CellRange);
	int __fastcall DimensionsSize(void);
	void __fastcall CalcUsedRange(Fmx::Uflxmessages::TXlsCellRange &CellRange);
	void __fastcall ArrangeCols(void);
	
public:
	__fastcall TCells(Fmx::Uxlsworkbookglobals::TWorkbookGlobals* const aGlobals, Fmx::Uxlscolinfo::TColInfoList* const aColInfoList);
	__fastcall virtual ~TCells(void);
	void __fastcall Clear(void);
	void __fastcall CopyFrom(TCells* const aList);
	void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const DataStream);
	void __fastcall SaveRangeToStream(Fmx::Uole2impl::TOle2File* const DataStream, const Fmx::Uflxmessages::TXlsCellRange &CellRange);
	__int64 __fastcall TotalSize(void);
	__int64 __fastcall FixTotalSize(const bool NeedsRecalc);
	__int64 __fastcall TotalRangeSize(const Fmx::Uflxmessages::TXlsCellRange &CellRange);
	void __fastcall FixRows(void);
	void __fastcall InsertAndCopyRows(const int FirstRow, const int LastRow, const int DestRow, const int aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, const bool OnlyFormulas);
	void __fastcall InsertAndCopyCols(const int FirstCol, const int LastCol, const int DestCol, const int aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, const bool OnlyFormulas);
	void __fastcall DeleteRows(const System::Word aRow, const System::Word aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall DeleteCols(const System::Word aCol, const System::Word aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall ArrangeInsertRowsAndCols(const int InsRowPos, const int InsRowCount, const int InsColPos, const int InsColCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall ArrangeInsertSheet(const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall AddRow(Fmx::Uxlsbaserecords::TRowRecord* const aRecord);
	void __fastcall AddCell(Fmx::Uxlsbaserecords::TCellRecord* const aRecord, const int aRow);
	void __fastcall AddMultipleCells(Fmx::Uxlscellrecords::TMultipleValueRecord* const aRecord);
	__property TCellList* CellList = {read=FCellList};
	__property Fmx::Uxlsbaserecordlists::TRowRecordList* RowList = {read=FRowList};
};

#pragma pack(pop)

class DELPHICLASS TRangeList;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TRangeList : public Fmx::Uxlsbaselist::TBaseList
{
	typedef Fmx::Uxlsbaselist::TBaseList inherited;
	
public:
	Fmx::Uxlsrangerecords::TRangeEntry* operator[](int index) { return Items[index]; }
	
private:
	Fmx::Uxlsrangerecords::TRangeEntry* __fastcall GetItems(int index);
	void __fastcall SetItems(int index, Fmx::Uxlsrangerecords::TRangeEntry* const Value);
	
public:
	__property Fmx::Uxlsrangerecords::TRangeEntry* Items[int index] = {read=GetItems, write=SetItems/*, default*/};
	HIDESBASE int __fastcall Add(Fmx::Uxlsrangerecords::TRangeEntry* aRecord);
	HIDESBASE void __fastcall Insert(int Index, Fmx::Uxlsrangerecords::TRangeEntry* aRecord);
	void __fastcall CopyFrom(TRangeList* const aRangeList);
	void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const DataStream);
	void __fastcall SaveRangeToStream(Fmx::Uole2impl::TOle2File* const DataStream, const Fmx::Uflxmessages::TXlsCellRange &CellRange);
	__int64 __fastcall TotalSize(void);
	__int64 __fastcall TotalRangeSize(const Fmx::Uflxmessages::TXlsCellRange &CellRange);
	void __fastcall InsertAndCopyRowsOrCols(const int FirstRow, const int LastRow, const int DestRow, const int aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, const bool UseCols);
	void __fastcall DeleteRowsOrCols(const System::Word aRow, const System::Word aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, const bool UseCols);
public:
	/* TObjectList.Create */ inline __fastcall TRangeList(void)/* overload */ : Fmx::Uxlsbaselist::TBaseList() { }
	/* TObjectList.Create */ inline __fastcall TRangeList(bool AOwnsObjects)/* overload */ : Fmx::Uxlsbaselist::TBaseList(AOwnsObjects) { }
	
public:
	/* TList.Destroy */ inline __fastcall virtual ~TRangeList(void) { }
	
};

#pragma pack(pop)

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