118 lines
3.3 KiB
C++
118 lines
3.3 KiB
C++
#ifndef __GRIDVIEW_H
|
|
#define __GRIDVIEW_H
|
|
|
|
// MatDlg.h : header file
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMatDlg dialog
|
|
//{{AFX_INCLUDES()
|
|
//#include "TrueDbGrid50.h"
|
|
//}}AFX_INCLUDES
|
|
class CFieldHead
|
|
{
|
|
public:
|
|
XString m_sName;
|
|
XString m_sDesc;
|
|
short m_nWidth;
|
|
BOOL m_bWritable;
|
|
int m_nDataType; //Use VARIANT data type flag
|
|
XString m_sDataFormat;
|
|
public:
|
|
CFieldHead() {m_bWritable=TRUE; m_nDataType=VT_BSTR;}
|
|
CFieldHead(const TCHAR *name, const TCHAR *desc, short w, BOOL bW=TRUE, int nT=VT_BSTR, const TCHAR *szFormat=NULL):
|
|
m_sName(name), m_sDesc(desc), m_nWidth(w), m_bWritable(bW), m_nDataType(nT)
|
|
{
|
|
if(szFormat) m_sDataFormat=szFormat;
|
|
}
|
|
CFieldHead(const CFieldHead &src) {
|
|
*this = src;
|
|
}
|
|
CFieldHead & operator = (const CFieldHead &src) {
|
|
m_sName=src.m_sName;
|
|
m_sDesc=src.m_sDesc;
|
|
m_nWidth=src.m_nWidth;
|
|
m_bWritable = src.m_bWritable;
|
|
m_nDataType = src.m_nDataType;
|
|
m_sDataFormat = src.m_sDataFormat;
|
|
return *this;
|
|
}
|
|
int operator !() {
|
|
return !m_sName;
|
|
}
|
|
BOOL IsNumeric() {
|
|
return (m_nDataType==VT_I2 || m_nDataType==VT_I4 || m_nDataType==VT_R4 || m_nDataType==VT_R8);
|
|
}
|
|
BOOL IsInteger() {
|
|
return (m_nDataType==VT_I2 || m_nDataType==VT_I4);
|
|
}
|
|
};
|
|
|
|
|
|
// modify by xlc on 090902 消除tg5lib影响
|
|
// 下面的类,辅助CTrueDBGrid50_TDBGrid类,已经不再使用
|
|
//#if ADS<18
|
|
#if 0
|
|
class CGridView : public CFormView
|
|
{
|
|
// Construction
|
|
protected:
|
|
CGridView():CFormView(0U) {ASSERT(0);}
|
|
CGridView(UINT id); // standard constructor
|
|
DECLARE_DYNCREATE(CGridView)
|
|
public:
|
|
|
|
// Dialog Data
|
|
//{{AFX_DATA(CMatDlg)
|
|
CTrueDBGrid50_TDBGrid m_grid;
|
|
//}}AFX_DATA
|
|
|
|
CodeBase m_db;
|
|
XDbfTable *m_pTable;
|
|
DList<long> m_lstBookmarks; // All the valid record number
|
|
int m_nCurIndex;
|
|
BOOL m_bAscend;
|
|
CString m_sSortFieldName;
|
|
|
|
DList<CFieldHead> m_lstHeadInfo;
|
|
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CGridView)
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
protected:
|
|
BOOL m_bReadEnable;
|
|
|
|
BOOL IsBOF() { return m_nCurIndex<=-1; }
|
|
BOOL IsEOF() { return m_nCurIndex>=m_lstBookmarks.Length(); }
|
|
void MoveNext() {
|
|
m_nCurIndex ++;
|
|
}
|
|
BOOL MoveTo(long bookmark);
|
|
void Move(long offset);
|
|
void GetBookmarks(BOOL bRetriveFromDbf);
|
|
void ConfigGrid();
|
|
void OnDocFileChanged();
|
|
void ReadData(CTrueDBGrid50_RowBuffer &RowBuffer, VARIANT FAR* StartLocation, long offset, long FAR* ApproximatePosition);
|
|
virtual XDbfTable *OpenDbfTable() { return NULL; }
|
|
|
|
// Generated message map functions
|
|
//{{AFX_MSG(CGridView)
|
|
virtual void OnInitialUpdate();
|
|
afx_msg void OnUnboundReadDataExMatgrid(LPDISPATCH RowBuf, VARIANT FAR* StartLocation, long offset, long FAR* ApproximatePosition);
|
|
afx_msg void OnUnboundWriteDataMatgrid(LPDISPATCH RowBuf, VARIANT FAR* WriteLocation);
|
|
afx_msg void OnUnboundAddDataMatgrid(LPDISPATCH RowBuf, VARIANT FAR* NewRowBookmark);
|
|
afx_msg void OnUnboundDeleteRowMatgrid(VARIANT FAR* Bookmark);
|
|
afx_msg void OnHeadClickMatgrid(short ColIndex);
|
|
DECLARE_EVENTSINK_MAP()
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
#endif
|
|
|
|
|
|
#endif |