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

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

#ifndef Fmx_UxlsformulaHPP
#define Fmx_UxlsformulaHPP

#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.Variants.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.SysUtils.hpp>	// Pascal unit
#include <FMX.UXlsBaseRecords.hpp>	// Pascal unit
#include <FMX.XlsMessages.hpp>	// Pascal unit
#include <FMX.UXlsTokenArray.hpp>	// Pascal unit
#include <FMX.XlsFormulaMessages.hpp>	// Pascal unit
#include <FMX.UFlxMessages.hpp>	// Pascal unit
#include <FMX.UXlsStrings.hpp>	// Pascal unit
#include <FMX.UOle2Impl.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Uxlsformula
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TTableRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTableRecord : public Fmx::Uxlsbaserecords::TBaseRecord
{
	typedef Fmx::Uxlsbaserecords::TBaseRecord inherited;
	
private:
	void __fastcall IncRowToMax(const Fmx::Xlsmessages::PArrayOfByte Pdata, const int rowPos, const int colPos, const int Offset, const int Max);
	void __fastcall IncColToMax(const Fmx::Xlsmessages::PArrayOfByte Pdata, const int rowPos, const int colPos, const int Offset, const int Max);
	
public:
	__fastcall virtual TTableRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize);
	void __fastcall ArrangeInsertRowsAndCols(const int aRowPos, const int aRowCount, const int aColPos, const int aColCount);
	void __fastcall ArrangeCopyRowsAndCols(const int DeltaRow, const int DeltaCol);
public:
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TTableRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TArrayRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TArrayRecord : public Fmx::Uxlsbaserecords::TBaseRecord
{
	typedef Fmx::Uxlsbaserecords::TBaseRecord inherited;
	
public:
	void __fastcall ArrangeInsertRowsAndCols(const int aRowPos, const int aRowCount, const int aColPos, const int aColCount);
	void __fastcall ArrangeCopyRowsAndCols(const int DeltaRow, const int DeltaCol);
public:
	/* TBaseRecord.Create */ inline __fastcall virtual TArrayRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : Fmx::Uxlsbaserecords::TBaseRecord(aId, aData, aDataSize) { }
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TArrayRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TFormulaRecord;
class PASCALIMPLEMENTATION TFormulaRecord : public Fmx::Uxlsbaserecords::TCellRecord
{
	typedef Fmx::Uxlsbaserecords::TCellRecord inherited;
	
private:
	System::Variant FormulaValue;
	TTableRecord* FTableRecord;
	TArrayRecord* FArrayRecord;
	void __fastcall ArrangeTokensInsertRowsAndCols(const int InsRowPos, const int InsRowOffset, const int CopyRowOffset, const int InsColPos, const int InsColOffset, const int CopyColOffset, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall ArrangeSharedTokens(void);
	void __fastcall SetTableRecord(TTableRecord* const Value);
	void __fastcall SetArrayRecord(TArrayRecord* const Value);
	void __fastcall ClearResult(void);
	int __fastcall SaveStringRecord(Fmx::Uole2impl::TOle2File* const Workbook, const bool IncludeHeaders);
	
protected:
	virtual Fmx::Uxlsbaserecords::TBaseRecord* __fastcall DoCopyTo(void);
	
public:
	__fastcall virtual TFormulaRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize);
	__fastcall TFormulaRecord(const System::Word aId, const System::Word aDataSize, const System::Word aRow, const System::Word aCol, const System::Word aXF, const System::Variant &aValue, const bool Options1904);
	__fastcall virtual ~TFormulaRecord(void);
	virtual void __fastcall ArrangeInsertRowsAndCols(const int aRowPos, const int aRowCount, const int aColPos, const int aColCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	virtual void __fastcall ArrangeCopyRowsAndCols(const int RowOffset, const int ColOffset);
	virtual void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const Workbook);
	virtual int __fastcall TotalSize(void);
	virtual __int64 __fastcall FixTotalSize(const bool NeedsRecalc);
	virtual int __fastcall TotalSizeNoHeaders(void);
	__property TTableRecord* TableRecord = {read=FTableRecord, write=SetTableRecord};
	__property TArrayRecord* ArrayRecord = {read=FArrayRecord, write=SetArrayRecord};
	bool __fastcall IsExp(unsigned &Key);
	void __fastcall MixShared(const Fmx::Xlsmessages::PArrayOfByte PData, const int aDataSize);
	virtual System::Variant __fastcall GetValue(void);
	void __fastcall SetFormulaValue(const System::Variant &v);
};


class DELPHICLASS TNameRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TNameRecord : public Fmx::Uxlsbaserecords::TBaseRecord
{
	typedef Fmx::Uxlsbaserecords::TBaseRecord inherited;
	
private:
	void __fastcall ArrangeTokensInsertRowsAndCols(const int InsRowPos, const int InsRowOffset, const int CopyRowOffset, const int InsColPos, const int InsColOffset, const int CopyColOffset, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	System::Byte __fastcall NameLength(void);
	int __fastcall NameSize(void);
	System::Byte __fastcall NameOptionFlags(void);
	void __fastcall ChangeRefToArea(void);
	
public:
	__fastcall virtual TNameRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize);
	__fastcall TNameRecord(const Fmx::Uflxmessages::TXlsNamedRange &Range, const void * Globals, const void * CellList);
	void __fastcall ArrangeInsertRowsAndCols(int aRowPos, int aRowCount, int aColPos, int aColCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall ArrangeInsertSheets(const int FirstSheet, const int SheetCount);
	TNameRecord* __fastcall ArrangeCopySheet(const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	int __fastcall RangeSheet(void);
	int __fastcall RefersToSheet(const Fmx::Xlsmessages::TGetSheet GetSheet);
	System::UnicodeString __fastcall Name(void);
	int __fastcall GetR1(void);
	int __fastcall GetR2(void);
	int __fastcall GetC1(void);
	int __fastcall GetC2(void);
	void __fastcall SetR1(int value);
	void __fastcall SetR2(int value);
	void __fastcall SetC1(int value);
	void __fastcall SetC2(int value);
public:
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TNameRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TShrFmlaRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TShrFmlaRecord : public Fmx::Uxlsbaserecords::TBaseRecord
{
	typedef Fmx::Uxlsbaserecords::TBaseRecord inherited;
	
public:
	unsigned Key;
	
protected:
	virtual Fmx::Uxlsbaserecords::TBaseRecord* __fastcall DoCopyTo(void);
	
public:
	int __fastcall FirstRow(void);
	int __fastcall LastRow(void);
	int __fastcall FirstCol(void);
	int __fastcall LastCol(void);
public:
	/* TBaseRecord.Create */ inline __fastcall virtual TShrFmlaRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : Fmx::Uxlsbaserecords::TBaseRecord(aId, aData, aDataSize) { }
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TShrFmlaRecord(void) { }
	
};

#pragma pack(pop)

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