// Borland C++ Builder
// Copyright (c) 1995, 1999 by Borland International
// All rights reserved

// (DO NOT EDIT: machine generated header) 'UXlsRowColEntries.pas' rev: 5.00

#ifndef UXlsRowColEntriesHPP
#define UXlsRowColEntriesHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <Contnrs.hpp>	// Pascal unit
#include <UXlsWorkbookGlobals.hpp>	// Pascal unit
#include <UXlsReferences.hpp>	// Pascal unit
#include <UXlsColInfo.hpp>	// Pascal unit
#include <UFlxMessages.hpp>	// Pascal unit
#include <UXlsSST.hpp>	// Pascal unit
#include <UXlsFormula.hpp>	// Pascal unit
#include <UXlsCellRecords.hpp>	// Pascal unit
#include <UXlsBaseList.hpp>	// Pascal unit
#include <UXlsRangeRecords.hpp>	// Pascal unit
#include <XlsMessages.hpp>	// Pascal unit
#include <UXlsOtherRecords.hpp>	// Pascal unit
#include <UXlsBaseRecordLists.hpp>	// Pascal unit
#include <UXlsBaseRecords.hpp>	// Pascal unit
#include <SysUtils.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

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

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

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


class DELPHICLASS TCellList;
class PASCALIMPLEMENTATION TCellList : public TBaseRowColList 
{
	typedef TBaseRowColList inherited;
	
private:
	Uxlsworkbookglobals::TWorkbookGlobals* FGlobals;
	Uxlsbaserecordlists::TRowRecordList* FRowRecordList;
	Uxlscolinfo::TColInfoList* FColInfoList;
	Uflxmessages::TXlsCellValue __fastcall GetValue(int Row, int Col);
	void __fastcall SetValue(int Row, int Col, const Uflxmessages::TXlsCellValue &Value);
	void __fastcall FixFormulaTokens(const Uxlsformula::TFormulaRecord* Formula, const Uxlsbaserecordlists::TShrFmlaRecordList* 
		ShrFmlas);
	WideString __fastcall GetFormula(int Row, int Col);
	void __fastcall SetFormula(int Row, int Col, const WideString Value);
	HIDESBASE Uxlsbaserecordlists::TCellRecordList* __fastcall GetItems(int index);
	HIDESBASE void __fastcall SetItems(int index, const Uxlsbaserecordlists::TCellRecordList* Value);
	
public:
	__property Uxlsbaserecordlists::TCellRecordList* Items[int index] = {read=GetItems, write=SetItems/*
		, default*/};
	HIDESBASE int __fastcall Add(Uxlsbaserecordlists::TCellRecordList* aRecord);
	HIDESBASE void __fastcall Insert(int Index, Uxlsbaserecordlists::TCellRecordList* aRecord);
	__fastcall TCellList(const Uxlsworkbookglobals::TWorkbookGlobals* aGlobals, const Uxlsbaserecordlists::TRowRecordList* 
		aRowRecordList, const Uxlscolinfo::TColInfoList* aColInfoList);
	__property Uflxmessages::TXlsCellValue Value[int Row][int Col] = {read=GetValue, write=SetValue};
	void __fastcall SetValueX2(const int Row, const int Col, const Uflxmessages::TXlsCellValue &Value, 
		const Uflxmessages::TRTFRunList RTFRuns);
	void __fastcall GetValueX2(const int Row, const int Col, /* out */ Uflxmessages::TXlsCellValue &V, 
		/* out */ Uflxmessages::TRTFRunList &RTFRuns);
	void __fastcall SetFormat(const int Row, const int Col, const int XF);
	__property WideString Formula[int Row][int Col] = {read=GetFormula, write=SetFormula};
	void __fastcall AssignFormulaX(const int Row, const int Col, const WideString Formula, const Variant 
		&Value);
	Xlsmessages::PArrayOfByte __fastcall ArrayFormula(const int Row, const int Col);
	Xlsmessages::PArrayOfByte __fastcall TableFormula(const int Row, const int Col);
	void __fastcall FixFormulas(const Uxlsbaserecordlists::TShrFmlaRecordList* ShrFmlas);
	WideString __fastcall GetSheetName(const int SheetNumber);
	int __fastcall AddExternSheet(const int FirstSheet, const int LastSheet);
	bool __fastcall FindSheet(WideString SheetName, /* out */ int &SheetIndex);
public:
	#pragma option push -w-inl
	/* TList.Destroy */ inline __fastcall virtual ~TCellList(void) { }
	#pragma option pop
	
};


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


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


//-- var, const, procedure ---------------------------------------------------

}	/* namespace Uxlsrowcolentries */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Uxlsrowcolentries;
#endif
#pragma option pop	// -w-
#pragma option pop	// -Vx

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// UXlsRowColEntries
