Posted on 2008-12-29 16:22
天之驕子 閱讀(5022)
評論(1) 編輯 收藏 引用
CGridCtrl類派生于CWnd類,該類主要包含以下八個方面的函數(shù),其
函數(shù)形式如下:
class CGridCtrl : public CWnd



{
// 1. CGridCtrl類的構(gòu)造函數(shù)
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. 表格行、列數(shù)方面的函數(shù)
BOOL SetRowCount(int nRows); //設(shè)置表的行數(shù)
BOOL SetColumnCount(int nCols); //設(shè)置表的列數(shù)
BOOL SetFixedRowCount(int nFixedRows = 1); //設(shè)置表的固定行數(shù)
BOOL SetFixedColumnCount(int nFixedCols = 1); //設(shè)置表的固定列數(shù)
int GetFixedRowCount() const; // 取表的固定行數(shù)
int GetFixedColumnCount() const; //取表的固定列數(shù)
……
// 3. 表格尺寸大小方面的函數(shù)
BOOL SetRowHeight(int row, int height); //設(shè)置表格單元的高度
BOOL SetColumnWidth(int col, int height); //設(shè)置表格單元的寬度
int GetRowHeight(int nRow) const; //獲取表格單元的高度
int GetColumnWidth(int nCol) const; //獲取表格單元的寬度
void AutoSize(); //對表格單元的高度與寬度進行自動設(shè)置
……
// 4. 表格顯示與特征方面的函數(shù)
void SetImageList(CImageList* pList); //設(shè)置列表圖標
void SetEditable(BOOL bEditable = TRUE); //設(shè)置表格的編輯狀態(tài)
BOOL SetColumnType(int nCol, int nType); //設(shè)置表格的列狀態(tài)
……
// 5. 顏色方面的函數(shù)
void SetTextColor(COLORREF clr); //設(shè)置輸入表格的文本顏色
void SetTextBkColor(COLORREF clr); //設(shè)置可供輸入文本的表格顏色
void SetFixedTextColor(COLORREF clr); //設(shè)置輸入固定表格的文本顏色
void SetFixedBkColor(COLORREF clr); //設(shè)置固定表格顏色
……
// 6. 表格信息函數(shù)
BOOL SetItem(const GV_ITEM* pItem); // 向表格中輸入信息
BOOL SetItemText(int nRow, int nCol, LPCTSTR str); //向某一單元表格中輸入文本
BOOL SetItemImage(int nRow, int nCol, int iImage); //在某一單元表格中設(shè)置圖標
……
// 7. 編輯方面的函數(shù)
virtual void OnEditCell(int nRow, int nCol, UINT nChar) //開始對表格進行編輯
virtual void OnEndEditCell(int nRow, int nCol, CString str) //結(jié)束對表格編輯
……
// 8. 表格打印函數(shù)
void Print(); //打印表格
……
};
CGridCtrl類的構(gòu)造函數(shù)形式如下:
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; //初始電子表格的行數(shù)

m_nCols = 0; //初始電子表格的列數(shù)

m_nFixedRows = 0; //初始化固定表格的行數(shù)

m_nFixedCols = 0; //初始化固定表格的列數(shù)

m_bEditable = TRUE; //初始化表格為可編輯狀態(tài)

……

//初始化設(shè)置表格的行列數(shù)

SetRowCount(nRows);

SetColumnCount(nCols);

SetFixedRowCount(nFixedRows);

SetFixedColumnCount(nFixedCols);

// 初始化表格的背景顏色及輸入表格的文本顏色

SetTextColor(m_crWindowText);

SetTextBkColor(m_crWindowColour);

SetFixedTextColor(m_crWindowText);

SetFixedBkColor(m_cr3DFace);

……
}
對表格中所輸入信息屬性的描述,是通過定義一結(jié)構(gòu)體函數(shù)來實現(xiàn),該結(jié)構(gòu)體函數(shù)形式如下:

typedef struct _GV_ITEM
{
int row,col; // 輸入信息的位置
UINT mask; //輸入信息的灰度值
UINT state; // 表格單元的狀態(tài)
UINT nFormat; // 信息的輸入形式
CString szText; // 輸入表格單元的文本
} GV_ITEM;
將CGridCtrl類與以下類結(jié)合起來,即可構(gòu)造成在其上可進行編輯和修改的電子
表格,這些類分別為:
1.用于單元表格范圍的兩個類:CCellRange[2]類和CCellID[3]類;
2.單元表格狀態(tài)屬性的類:CGridCell[4]類;
3.對表格進行編輯的兩個類:CInplaceEdit[5]類和CInplaceList[6]類;