Accounting Software
Small Business Software Estimating Software
Time Tracking SoftwareTime Management SoftwareTime Billing SoftwareContact Management SoftwareCustomer Management SoftwareProject Management SoftwareBusiness Management Software

Data Table (Header)

Link to: source code | tables directory

Copyright Turtle Creek Software 1996-2006. All Rights Reserved.

This class manages data tables for the Goldenseal accounting software,
small business management software, construction project management software and
construction accounting software.

class CDataTable : public CTCS_Table
{
public:

enum { class_ID = 'DTTL' };

CDataTable(LStream *inStream);
CDataTable(const SPaneInfo &inPaneInfo, const SViewInfo &inViewInfo);
virtual ~CDataTable();

virtual void InsertRows(const TableIndexT howMany, const Boolean redraw = true);
virtual CHolder *GetNewDataHolder(const TableIndexT /*row*/,
const TableIndexT /*col*/) const
{ return (CHolder*) NEW CStringHolder; } // TCS cast added 2/5/98
virtual void InsertCols(const TableIndexT howMany, const SInt32 inColWidth = 0,
const Boolean redraw = true);
virtual void RemoveRows(const TableIndexT howMany, const Boolean redraw = true);
virtual void RemoveCols(const TableIndexT howMany, const Boolean redraw = true);

// the following routines are for setting and getting the contents
// of the data entries in the data arrays
virtual Boolean SetDataCellText(const TableIndexT row, const TableIndexT col,
const CTextString &inText);
virtual Boolean SetDataCellValue(const TableIndexT row, const TableIndexT col,
const SInt32 inValue);
virtual CTextString GetDataCellText(const TableIndexT row,
const TableIndexT col) const;
virtual SInt32 GetDataCellValue(const TableIndexT row,
const TableIndexT col) const;

/*virtual Boolean SetCellData(TableIndexT row, TableIndexT col,
const CHolder &dataHolder);*/
/*virtual Boolean GetCellData(TableIndexT row, TableIndexT col,
CHolder *outHolder) const;*/

// the following routines are overrides of CTCS_Table accessor routines;
// these just call the above data-access routines
virtual Boolean SetCellText(const TableIndexT row, const TableIndexT col,
const CTextString &inText,
Boolean /*redraw*/ = true)
{ return SetDataCellText(row, col, inText); }
virtual Boolean SetCellValue(const TableIndexT row, const TableIndexT col, SInt32 inValue)
{ return SetDataCellValue(row, col, inValue); }
virtual CTextString GetCellText(const TableIndexT row, const TableIndexT col) const
{ return GetDataCellText(row, col); }
virtual SInt32 GetCellValue(const TableIndexT row, const TableIndexT col) const
{ return GetDataCellValue(row, col); }

virtual SInt16 GetColData(const TableIndexT /*col*/) const { return 0; }

virtual void ClearRow(const TableIndexT row);
virtual TableIndexT FirstDataRow() const { return 1; }
virtual TableIndexT LastDataRow() const { return LastRow(); }

virtual void MakeSingleRowTable(const Boolean redraw = true, const Boolean findMode = false);

virtual Boolean FillOnlyVisibleRows() { return mFillOnlyVisibleRows; }
virtual void SetFillOnlyVisibleRows(const Boolean inValue) { mFillOnlyVisibleRows = inValue; }

virtual void HandleCellDrag(const TableCellT &sourceCell, const TableCellT &targetCell);

virtual void SwapRowData(const TableIndexT sourceRow, const TableIndexT targetRow);

virtual void SortTableRows(const TagType colNumber, const Boolean sortAscending,
TObjectIDArray *breakdownArray = nil);
virtual TUInt32Array GetSortedRowArray(const TagType colNumber, const Boolean sortAscending);
virtual void GetSortedStringArray(const TagType colNumber, const Boolean sortAscending,
TUInt32Array &rowArray);
virtual void GetSortedMoneyArray(const TagType colNumber, const Boolean sortAscending,
TUInt32Array &rowArray);
virtual void GetSortedDateArray(const TagType colNumber, const Boolean sortAscending,
TUInt32Array &rowArray);

virtual SInt32 GetTableSize() const;

protected:

CArrayOfDataArrays mDataArrays;

UInt8 mFillOnlyVisibleRows:1, // TCS 1/11/01
mDataTableFiller:7;

SInt32 mTableDataSize;


// return the data array for the requested column. This can return
// nil, which is why we don't check the return value of FetchItemAt
CDataHolderPtrArray *GetColDataArray(const TableIndexT col) const
{
CDataHolderPtrArray *dataArray = nil;
mDataArrays.FetchItemAt(col, dataArray);
return dataArray;
}
const CHolder *GetCellDataHolder(const TableIndexT row, const TableIndexT col) const;
Boolean SetCellDataHolder(const TableIndexT row, const TableIndexT col,
CHolder *dataHolder);
};