home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************\
- Copyright (c) 1992 by
- ProtoView Development Co. and Atlantic Information Management, Inc.
- All Rights Reserved
- \***************************************************************************/
-
- //============================================================================
- //
- // Borland C++ Class Library for the Data Table Custom Control
- //
- //============================================================================
-
- #ifndef __DTCTL_H
- #define __DTCTL_H
-
- #ifndef __CONTROL_H
- #include <control.h>
- #endif
-
- #ifndef __ARRAY_H
- #include <array.h>
- #endif
-
- #include "datatbl.h"
-
- #ifndef EXPORT
- #ifdef __DLL__
- # define EXPORT _export
- #else
- # define EXPORT huge
- #endif
- #endif
-
- #define DTE_NOWINDOW DTE_MESSAGENUM
- // This error is only returned by a member function when there is no
- // interface element (HWindow) associated with this object. If all
- // operations on the interface element are done through the member
- // functions of the object, DTE_MESSAGENUM will never be returned.
- // Therefore, DTE_NOWINDOW can safely share the same number.
-
- typedef long DT_STATUS;
- typedef int EDIT_ACTION;
- typedef COLNUM far * LPCOLNUM;
- typedef ROWNUM far * LPROWNUM;
-
- enum SELECT_TYPE {UNSELECT = FALSE, SELECT = TRUE};
- enum SELECT_MODE {ROW_SELECTION = FALSE, COLUMN_SELECTION = TRUE};
-
- /**************************************************************************\
- TDataTbl Class Definition
- \**************************************************************************/
-
- _CLASSDEF(TDataTbl)
- _CLASSDEF(TDataTblData)
-
- class _EXPORT TDataTbl : public TControl
- {
-
- public:
-
- //****************** TDataTbl Constructors *******************************
-
- TDataTbl (PTWindowsObject AParent, int AnId, int X, int Y, int W, int H,
- PTModule AModule = NULL);
-
- TDataTbl (PTWindowsObject AParent, int ResourceId, PTModule AModule = NULL);
-
- //****************** TDataTbl Public Member Data ************************
-
- static WORD wVersion;
-
- //****************** TDataTbl Public Member Functions *******************
-
- //---------------- DeleteCol ----------------
- DT_STATUS DeleteCol (ACCMODE anAccessMode)
- { return (DT_STATUS) SendDataTblMessage (DTM_DELETECOL, anAccessMode); }
-
- //---------------- DeleteRow ----------------
- DT_STATUS DeleteRow (ACCMODE anAccessMode)
- { return (DT_STATUS) SendDataTblMessage (DTM_DELETEROW, anAccessMode); }
-
- //---------------- EditCurrCell ----------------
- DT_STATUS EditCurrCell (EDIT_ACTION anEditAction)
- { return (DT_STATUS) SendDataTblMessage (DTM_EDITCURRCELL, anEditAction); }
-
- //---------------- GetAccessCol ----------------
- COLNUM GetAccessCol () const
- { return (COLNUM) SendDataTblMessage (DTM_GETACCESSCOL); }
-
- //---------------- GetAccessRow ----------------
- ROWNUM GetAccessRow () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETACCESSROW); }
-
- //---------------- GetCharSel ----------------
- DWORD GetCharSel () const
- { return SendDataTblMessage (DTM_GETCHARSEL); }
-
- //---------------- GetColCfg ----------------
- DT_STATUS GetColCfg (COLNUM aColumnNumber, LPVOID theColumnConfig) const
- { return (DT_STATUS) SendDataTblMessage (DTM_GETCOLCFG, aColumnNumber, (LONG) theColumnConfig); }
-
- //---------------- GetColCfgSize ----------------
- int GetColCfgSize (COLNUM aColumnNumber) const
- { return (int) SendDataTblMessage (DTM_GETCOLCFGSIZE, aColumnNumber); }
-
- //---------------- GetColCount ----------------
- int GetColCount () const
- { return (int) SendDataTblMessage (DTM_GETCOLCOUNT); }
-
- //---------------- GetColDatalen ----------------
- COLLEN GetColDatalen (COLNUM aColumnNumber) const
- { return (COLLEN) SendDataTblMessage (DTM_GETCOLDATALEN, aColumnNumber); }
-
- //---------------- GetColExtra1 ----------------
- DWORD GetColExtra1 (COLNUM aColumnNumber) const
- { return (DWORD) SendDataTblMessage (DTM_GETCOLEXTRA1, aColumnNumber); }
-
- //---------------- GetColExtra2 ----------------
- DWORD GetColExtra2 (COLNUM aColumnNumber) const
- { return (DWORD) SendDataTblMessage (DTM_GETCOLEXTRA2, aColumnNumber); }
-
- //---------------- GetColFormat ----------------
- DT_STATUS GetColFormat (COLNUM aColumnNumber, LPVOID theColumnFormat) const
- { return (DT_STATUS) SendDataTblMessage (DTM_GETCOLFORMAT, aColumnNumber, (LONG) theColumnFormat); }
-
- //---------------- GetColHead ----------------
- DT_STATUS GetColHead (COLNUM aColumnNumber, LPSTR theColumnHead) const
- { return (DT_STATUS) SendDataTblMessage (DTM_GETCOLHEAD, aColumnNumber, (LONG) theColumnHead); }
-
- //---------------- GetColName ----------------
- DT_STATUS GetColName (COLNUM aColumnNumber, LPSTR theColumnName) const
- { return (DT_STATUS) SendDataTblMessage (DTM_GETCOLNAME, aColumnNumber, (LONG) theColumnName); }
-
- //---------------- GetColNumber ----------------
- int GetColNumber (LPSTR theColumnName) const
- { return (int) SendDataTblMessage (DTM_GETCOLNAME, NULL, (LONG) theColumnName); }
-
- //---------------- GetColSelCount ----------------
- int GetColSelCount () const
- { return (int) SendDataTblMessage (DTM_GETCOLSELCOUNT); }
-
- //---------------- GetColSelFirst ----------------
- int GetColSelFirst () const
- { return (int) SendDataTblMessage (DTM_GETCOLSELFIRST); }
-
- //---------------- GetColSelList ----------------
- DT_STATUS GetColSelList (LPCOLNUM aColumnSelList) const
- { return (DT_STATUS) SendDataTblMessage (DTM_GETCOLSELLIST, NULL, (LONG) aColumnSelList); }
-
- //---------------- GetColSelNext ----------------
- int GetColSelNext (COLNUM thePreviousSelCol) const
- { return (int) SendDataTblMessage (DTM_GETCOLSELNEXT, thePreviousSelCol); }
-
- //---------------- GetColStatus ----------------
- BOOL GetColStatus (COLNUM aColumnNumber) const
- { return (BOOL) SendDataTblMessage (DTM_GETCOLSELNEXT, aColumnNumber); }
-
- //---------------- GetColStyle ----------------
- COLSTYLE GetColStyle (COLNUM aColumnNumber) const
- { return (COLSTYLE) SendDataTblMessage (DTM_GETCOLSTYLE, aColumnNumber); }
-
- //---------------- GetColType ----------------
- COLTYPE GetColType (COLNUM aColumnNumber) const
- { return (COLTYPE) SendDataTblMessage (DTM_GETCOLTYPE, aColumnNumber); }
-
- //---------------- GetColWidth ----------------
- int GetColWidth (COLNUM aColumnNumber) const
- { return (int) SendDataTblMessage (DTM_GETCOLWIDTH, aColumnNumber); }
-
- //---------------- GetConfig ----------------
- DWORD GetConfig (LPTABLECFGSTRUCT theDataTblConfig) const
- { return SendDataTblMessage (DTM_GETCONFIG, NULL, (LONG) theDataTblConfig); }
-
- //---------------- GetConfigSize ----------------
- int GetConfigSize () const
- { return (int) SendDataTblMessage (DTM_GETCONFIGSIZE); }
-
- //---------------- GetCurCol ----------------
- COLNUM GetCurCol () const
- { return (COLNUM) SendDataTblMessage (DTM_GETCURCOL); }
-
- //---------------- GetCurColSel ----------------
- COLNUM GetCurColSel () const
- { return (COLNUM) SendDataTblMessage (DTM_GETCURCOLSEL); }
-
- //---------------- GetCurRow ----------------
- ROWNUM GetCurRow () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETCURROW); }
-
- //---------------- GetCurRowSel ----------------
- ROWNUM GetCurRowSel () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETCURROWSEL); }
-
- //---------------- GetDTMetrics ----------------
- LONG GetDTMetrics (int aMetricIndex) const
- { return (LONG) SendDataTblMessage (DTM_GETDTMETRICS, aMetricIndex); }
-
- //---------------- GetEditKey ----------------
- WORD GetEditKey (EDIT_ACTION anEditAction) const
- { return (WORD) SendDataTblMessage (DTM_GETEDITKEY, anEditAction); }
-
- //---------------- GetLeftIndex ----------------
- COLNUM GetLeftIndex () const
- { return (COLNUM) SendDataTblMessage (DTM_GETLEFTINDEX); }
-
- //---------------- GetNotifyCol ----------------
- COLNUM GetNotifyCol () const
- { return (COLNUM) SendDataTblMessage (DTM_GETNOTIFYCOL); }
-
- //---------------- GetNotifyRow ----------------
- ROWNUM GetNotifyRow () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETNOTIFYROW); }
-
- //---------------- GetRowCount ----------------
- ROWNUM GetRowCount () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETROWCOUNT); }
-
- //---------------- GetRowSelCount ----------------
- ROWNUM GetRowSelCount () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETROWSELCOUNT); }
-
- //---------------- GetRowSelFirst ----------------
- ROWNUM GetRowSelFirst () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETROWSELFIRST); }
-
- //---------------- GetRowSelList ----------------
- DT_STATUS GetRowSelList (LPROWNUM aRowSelList) const
- { return (DT_STATUS) SendDataTblMessage (DTM_GETROWSELLIST, NULL, (LONG) aRowSelList); }
-
- //---------------- GetRowSelNext ----------------
- LONG GetRowSelNext (ROWNUM thePreviousSelRow) const
- { return (LONG) SendDataTblMessage (DTM_GETROWSELNEXT, NULL, thePreviousSelRow); }
-
- //---------------- GetRowStatus ----------------
- BOOL GetRowStatus (ROWNUM aRowNumber) const
- { return (BOOL) SendDataTblMessage (DTM_GETROWSTATUS, NULL, aRowNumber); }
-
- //---------------- GetSelMode ----------------
- BOOL GetSelMode () const
- { return (BOOL) SendDataTblMessage (DTM_GETSELMODE); }
-
- //---------------- GetTopIndex ----------------
- ROWNUM GetTopIndex () const
- { return (ROWNUM) SendDataTblMessage (DTM_GETTOPINDEX); }
-
- //---------------- GetVisCols ----------------
- int GetVisCols () const
- { return (int) SendDataTblMessage (DTM_GETVISCOLS); }
-
- //---------------- GetVisRows ----------------
- LONG GetVisRows () const
- { return (LONG) SendDataTblMessage (DTM_GETVISROWS); }
-
- //---------------- GetWndStyle ----------------
- DWORD GetWndStyle () const
- { return SendDataTblMessage (DTM_GETWNDSTYLE); }
-
- //---------------- InsertCol ----------------
- DT_STATUS InsertCol (ACCMODE anAccessMode, LPCOLUMNCFGSTRUCT theColConfig)
- { return (DT_STATUS) SendDataTblMessage (DTM_INSERTCOL, anAccessMode, (LONG) theColConfig); }
-
- //---------------- InsertRow ----------------
- DT_STATUS InsertRow (ACCMODE anAccessMode, LPVOID theRowData)
- { return (DT_STATUS) SendDataTblMessage (DTM_INSERTROW, anAccessMode, (LONG) theRowData); }
-
- //---------------- MoveColTo ----------------
- DT_STATUS MoveColTo (ACCMODE anAccessMode, COLNUM aNewColumnNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_MOVECOLTO, anAccessMode, aNewColumnNumber); }
-
- //---------------- MoveRowTo ----------------
- DT_STATUS MoveRowTo (ACCMODE anAccessMode, ROWNUM aNewRowNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_MOVEROWTO, anAccessMode, aNewRowNumber); }
-
- //---------------- ReadCell ----------------
- DT_STATUS ReadCell (ACCMODE anAccessMode, LPDWORD theCellData) const
- { return (DT_STATUS) SendDataTblMessage (DTM_READCELL, anAccessMode, (LONG) theCellData); }
-
- //---------------- ReadCellRect ----------------
- DT_STATUS ReadCellRect (ACCMODE anAccessMode, LPRECT theCellRect) const
- { return (DT_STATUS) SendDataTblMessage (DTM_READCELLRECT, anAccessMode, (LONG) theCellRect); }
-
- //---------------- ReadCol ----------------
- DT_STATUS ReadCol (ACCMODE anAccessMode, LPVOID theColData) const
- { return (DT_STATUS) SendDataTblMessage (DTM_READCOL, anAccessMode, (LONG) theColData); }
-
- //---------------- ReadRow ----------------
- DT_STATUS ReadRow (ACCMODE anAccessMode, LPVOID theRowData) const
- { return (DT_STATUS) SendDataTblMessage (DTM_READROW, anAccessMode, (LONG) theRowData); }
-
- //---------------- ReplicateColTo ----------------
- DT_STATUS ReplicateColTo (ACCMODE anAccessMode, COLNUM aNewColumnNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_REPLICATECOLTO, anAccessMode, aNewColumnNumber); }
-
- //---------------- ReplicateRowTo ----------------
- DT_STATUS ReplicateRowTo (ACCMODE anAccessMode, ROWNUM aNewRowNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_REPLICATEROWTO, anAccessMode, aNewRowNumber); }
-
- //---------------- ResetAll ----------------
- DT_STATUS ResetAll ()
- { return (DT_STATUS) SendDataTblMessage (DTM_RESETALL); }
-
- //---------------- ResetData ----------------
- DT_STATUS ResetData ()
- { return (DT_STATUS) SendDataTblMessage (DTM_RESETDATA); }
-
- //---------------- SelAllCols ----------------
- DT_STATUS SelAllCols (SELECT_TYPE aSelectType)
- { return (DT_STATUS) SendDataTblMessage (DTM_SELALLCOLS, NULL, aSelectType); }
-
- //---------------- SelAllRows ----------------
- DT_STATUS SelAllRows (SELECT_TYPE aSelectType)
- { return (DT_STATUS) SendDataTblMessage (DTM_SELALLROWS, aSelectType); }
-
- //---------------- SelCol ----------------
- DT_STATUS SelCol (COLNUM aColumnNumber, SELECT_TYPE aSelectType)
- { return (DT_STATUS) SendDataTblMessage (DTM_SELCOL, aColumnNumber, aSelectType); }
-
- //---------------- SelColRange ----------------
- DT_STATUS SelColRange (COLNUM theLastColumnInRange, SELECT_TYPE aSelectType)
- { return (DT_STATUS) SendDataTblMessage (DTM_SELCOLRANGE, theLastColumnInRange, aSelectType); }
-
- //---------------- SelRow ----------------
- DT_STATUS SelRow (SELECT_TYPE aSelectType, ROWNUM aRowNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_SELROW, aSelectType, aRowNumber); }
-
- //---------------- SelRowRange ----------------
- DT_STATUS SelRowRange (SELECT_TYPE aSelectType, ROWNUM theLastRowInRange)
- { return (DT_STATUS) SendDataTblMessage (DTM_SELROWRANGE, aSelectType, theLastRowInRange); }
-
- //---------------- SetAccessPos ----------------
- DT_STATUS SetAccessPos (COLNUM aColumnNumber, ROWNUM aRowNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETACCESSPOS, aColumnNumber, aRowNumber); }
-
- //---------------- SetCharSel ----------------
- DT_STATUS SetCharSel (int theFirstSelectedChar, int theLastSelectedChar)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCHARSEL, NULL,
- MAKELONG (theFirstSelectedChar, theLastSelectedChar)); }
-
- //---------------- SetColCfg ----------------
- DT_STATUS SetColCfg (COLNUM aColumnNumber, LPVOID aColumnConfig)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLCFG, aColumnNumber, (LONG) aColumnConfig); }
-
- //---------------- SetColCount ----------------
- DT_STATUS SetColCount (int columnCount)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLCOUNT, columnCount); }
-
- //---------------- SetColDatalen ----------------
- DT_STATUS SetColDatalen (COLNUM aColumnNumber, COLLEN columnLength)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLDATALEN, aColumnNumber, columnLength); }
-
- //---------------- SetColExtra1 ----------------
- DT_STATUS SetColExtra1 (COLNUM aColumnNumber, DWORD columnExtra)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLEXTRA1, aColumnNumber, columnExtra); }
-
- //---------------- SetColExtra2 ----------------
- DT_STATUS SetColExtra2 (COLNUM aColumnNumber, DWORD columnExtra)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLEXTRA2, aColumnNumber, columnExtra); }
-
- //---------------- SetColFormat ----------------
- DT_STATUS SetColFormat (COLNUM aColumnNumber, LPSTR aColumnFormat)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLFORMAT, aColumnNumber, (LONG) aColumnFormat); }
-
- //---------------- SetColHead ----------------
- DT_STATUS SetColHead (COLNUM aColumnNumber, LPSTR aColumnHead)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLHEAD, aColumnNumber, (LONG) aColumnHead); }
-
- //---------------- SetColName ----------------
- DT_STATUS SetColName (COLNUM aColumnNumber, LPSTR aColumnName)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLNAME, aColumnNumber, (LONG) aColumnName); }
-
- //---------------- SetColStyle ----------------
- DT_STATUS SetColStyle (COLNUM aColumnNumber, COLSTYLE columnStyle)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLSTYLE, aColumnNumber, columnStyle); }
-
- //---------------- SetColType ----------------
- DT_STATUS SetColType (COLNUM aColumnNumber, COLTYPE aColumnType)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLTYPE, aColumnNumber, aColumnType); }
-
- //---------------- SetColWidth ----------------
- DT_STATUS SetColWidth (COLNUM aColumnNumber, int columnWidth)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCOLWIDTH, aColumnNumber, columnWidth); }
-
- //---------------- SetConfig ----------------
- DT_STATUS SetConfig (LPTABLECFGSTRUCT theDataTblConfig)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCONFIG, NULL, (LONG) theDataTblConfig); }
-
- //---------------- SetCurCell ----------------
- DT_STATUS SetCurCell (COLNUM aColumnNumber, ROWNUM aRowNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETCURCELL, aColumnNumber, aRowNumber); }
-
- //---------------- SetEditKey ----------------
- DT_STATUS SetEditKey (EDIT_ACTION anEditAction, WORD aVirtualKey)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETEDITKEY, anEditAction, aVirtualKey); }
-
- //---------------- SetLeftIndex ----------------
- DT_STATUS SetLeftIndex (COLNUM aColumnNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_GETLEFTINDEX, NULL, aColumnNumber); }
-
- //---------------- SetSelMode ----------------
- DT_STATUS SetSelMode (SELECT_MODE columnSelectToggle)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETSELMODE, NULL, columnSelectToggle); }
-
- //---------------- SetTopIndex ----------------
- DT_STATUS SetTopIndex (ROWNUM aRowNumber)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETTOPINDEX, NULL, aRowNumber); }
-
- //---------------- SetWndStyle ----------------
- DT_STATUS SetWndStyle (DWORD windowStyle)
- { return (DT_STATUS) SendDataTblMessage (DTM_SETWNDSTYLE, NULL, windowStyle); }
-
- //---------------- UpdateCell ----------------
- DT_STATUS UpdateCell (ACCMODE anAccessMode, LPDWORD theCellData)
- { return (DT_STATUS) SendDataTblMessage (DTM_UPDATECELL, anAccessMode, (LONG) theCellData); }
-
- //---------------- UpdateCol ----------------
- DT_STATUS UpdateCol (ACCMODE anAccessMode, LPDWORD theColData)
- { return (DT_STATUS) SendDataTblMessage (DTM_UPDATECOL, anAccessMode, (LONG) theColData); }
-
- //---------------- UpdateRow ----------------
- DT_STATUS UpdateRow (ACCMODE anAccessMode, LPDWORD theRowData)
- { return (DT_STATUS) SendDataTblMessage (DTM_UPDATEROW, anAccessMode, (LONG) theRowData); }
-
- private:
-
- DWORD SendDataTblMessage (WORD wMsg, WORD wParam = NULL, LONG lParam = NULL) const
- {
- if (HWindow)
- return SendMessage (HWindow, wMsg, wParam, lParam);
- else
- return DTE_NOWINDOW;
- }
-
- void TransferGetData (RTDataTblData DTData);
- void TransferSetData (RTDataTblData DTData);
-
- protected:
-
- virtual LPSTR GetClassName (void);
- virtual void GetWindowClass (WNDCLASS _FAR & AWndClass);
- virtual BOOL Register (void);
- virtual WORD Transfer (Pvoid _FAR DataPtr, WORD TransferFlag);
-
- };
-
- //==================================================================
- // TDataTblData class - for Transfer functions
- //==================================================================
-
- typedef void ForEachRowFunc (LPVOID lpRowData, void _FAR * pArg);
- typedef void ForEachColFunc (COLNUM Col, void _FAR * pArg);
-
- //==================================================================
-
- class _EXPORT TDataTblData
- {
- private:
-
- int RowLen;
- PArray pRows;
- PArray pSelRows;
- PArray pSelCols;
-
- public:
-
- TDataTblData (int RowLength);
- ~TDataTblData (void);
-
- int GetRowLength (void) const;
- ROWNUM GetRowCount (void) const;
- ROWNUM GetSelectedRowCount (void) const;
- COLNUM GetSelectedColCount (void) const;
-
- void AddRow (LPVOID lpRowData, BOOL IsSelected = FALSE);
- BOOL RowIsSelected (LPVOID lpRowData);
- void SelectRow (ROWNUM Row);
- void SelectCol (COLNUM Col);
-
- void ForEachRow (ForEachRowFunc _FAR *fn, void _FAR *pArg) const;
- void ForEachSelectedRow (ForEachRowFunc _FAR *fn, void _FAR *pArg) const;
- void ForEachSelectedCol (ForEachColFunc _FAR *fn, void _FAR *pArg) const;
-
- void ResetRows (void);
- void ResetRowSelections (void);
- void ResetColSelections (void);
-
- friend void TDataTbl::TransferGetData (RTDataTblData DTData);
- friend void TDataTbl::TransferSetData (RTDataTblData DTData);
- };
-
- #endif // ifndef _DTCTL_H
-