Posted on 2008-12-29 16:22
天之骄子 阅读(4863)
评论(1) 编辑 收藏 引用
CGridCtrl类派生于CWnd类,该类主要包含以下八个方面的函数,其
函数形式如下:
class CGridCtrl : public CWnd
{
// 1. CGridCtrl类的构造函数
CGridCtrl(int nRows = 0, int nCols = 0, int nFixedRows = 0, int nFixedCols = 0);
BOOL Create(const RECT& rect, CWnd* parent, UINT nID,
DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE);
// 2. 表格行、列数方面的函数
BOOL SetRowCount(int nRows); //设置表的行数
BOOL SetColumnCount(int nCols); //设置表的列数
BOOL SetFixedRowCount(int nFixedRows = 1); //设置表的固定行数
BOOL SetFixedColumnCount(int nFixedCols = 1); //设置表的固定列数
int GetFixedRowCount() const; // 取表的固定行数
int GetFixedColumnCount() const; //取表的固定列数
……
// 3. 表格尺寸大小方面的函数
BOOL SetRowHeight(int row, int height); //设置表格单元的高度
BOOL SetColumnWidth(int col, int height); //设置表格单元的宽度
int GetRowHeight(int nRow) const; //获取表格单元的高度
int GetColumnWidth(int nCol) const; //获取表格单元的宽度
void AutoSize(); //对表格单元的高度与宽度进行自动设置
……
// 4. 表格显示与特征方面的函数
void SetImageList(CImageList* pList); //设置列表图标
void SetEditable(BOOL bEditable = TRUE); //设置表格的编辑状态
BOOL SetColumnType(int nCol, int nType); //设置表格的列状态
……
// 5. 颜色方面的函数
void SetTextColor(COLORREF clr); //设置输入表格的文本颜色
void SetTextBkColor(COLORREF clr); //设置可供输入文本的表格颜色
void SetFixedTextColor(COLORREF clr); //设置输入固定表格的文本颜色
void SetFixedBkColor(COLORREF clr); //设置固定表格颜色
……
// 6. 表格信息函数
BOOL SetItem(const GV_ITEM* pItem); // 向表格中输入信息
BOOL SetItemText(int nRow, int nCol, LPCTSTR str); //向某一单元表格中输入文本
BOOL SetItemImage(int nRow, int nCol, int iImage); //在某一单元表格中设置图标
……
// 7. 编辑方面的函数
virtual void OnEditCell(int nRow, int nCol, UINT nChar) //开始对表格进行编辑
virtual void OnEndEditCell(int nRow, int nCol, CString str) //结束对表格编辑
……
// 8. 表格打印函数
void Print(); //打印表格
……
};
CGridCtrl类的构造函数形式如下:
CGridCtrl::CGridCtrl(int nRows, int nCols, int nFixedRows, int nFixedCols)
{
m_crWindowText = ::GetSysColor(COLOR_WINDOWTEXT);
m_crWindowColour = ::GetSysColor(COLOR_WINDOW);
m_cr3DFace = ::GetSysColor(COLOR_3DFACE);
m_nRows = 0; //初始电子表格的行数
m_nCols = 0; //初始电子表格的列数
m_nFixedRows = 0; //初始化固定表格的行数
m_nFixedCols = 0; //初始化固定表格的列数
m_bEditable = TRUE; //初始化表格为可编辑状态
……
//初始化设置表格的行列数
SetRowCount(nRows);
SetColumnCount(nCols);
SetFixedRowCount(nFixedRows);
SetFixedColumnCount(nFixedCols);
// 初始化表格的背景颜色及输入表格的文本颜色
SetTextColor(m_crWindowText);
SetTextBkColor(m_crWindowColour);
SetFixedTextColor(m_crWindowText);
SetFixedBkColor(m_cr3DFace);
……
}
对表格中所输入信息属性的描述,是通过定义一结构体函数来实现,该结构体函数形式如下:
typedef struct _GV_ITEM {
int row,col; // 输入信息的位置
UINT mask; //输入信息的灰度值
UINT state; // 表格单元的状态
UINT nFormat; // 信息的输入形式
CString szText; // 输入表格单元的文本
} GV_ITEM;
将CGridCtrl类与以下类结合起来,即可构造成在其上可进行编辑和修改的电子
表格,这些类分别为:
1.用于单元表格范围的两个类:CCellRange[2]类和CCellID[3]类;
2.单元表格状态属性的类:CGridCell[4]类;
3.对表格进行编辑的两个类:CInplaceEdit[5]类和CInplaceList[6]类;