MFC CGridCtrl控件的使用

1、首先要使用MFCgridctrl 必须要在用到的系统中导入gridctrl文件夹的全部cpp和h文件(方法 project-->add to project -->files),这时候可以在类的试图中看到CGridCtrl CCellID等等一些类
2、加入一个Custom Control,将Class设为: MFCGridCtrl 记住要 MFCGridCtrl 这个名字,原因是该类用registerClass注册了该类,Style等可以随便设置
3、在使用类中,定义一个对象: CGridCtrl m_AttrGrid;注意一定要定义一个对象,否则该类如果是窗口类的话将用DoModal无法显示

4、编译时如果报错,说找不到CGridCtrl,那么在相应的定义对象的 .h内将GridCtrl.h包含进入 #include "路径/GridCtrl.h"

5、在DoDataExchange(CDataExchange* pDX)函数中加入:
             DDX_GridControl(pDX, IDC_GRID, m_Grid);

6、如果需要初始化该控件 可在使用的类中的 OnInitDialog 加相关函数
比如 我写的
 m_AttrGrid.SetColumnCount(3);    // 设定总共的列数
 m_AttrGrid.SetRowCount(1)        // 设定总共的行数
 m_AttrGrid.SetFixedRowCount(1);  // 设定固定行数
 m_AttrGrid.SetItemText(0,0,"属性"); // SetItemText 用来设定某行某列的具体文本数值
 m_AttrGrid.SetItemText(0,1,"标准值");
 m_AttrGrid.SetItemText(0,2,"当前值");
 // 可以通过
//  m_AttrGrid.SetItemState(i,0,GVIS_READONLY);
//  m_AttrGrid.SetItemState(i,1,GVIS_READONLY);
/// 来设置单元格是否只读
 CRect GRect;
 m_AttrGrid.GetWindowRect(&GRect);               // 得到控件的宽度
 m_AttrGrid.SetColumnWidth(0,GRect.Width()/3-2); // 设定没列的宽度
 m_AttrGrid.SetColumnWidth(1,GRect.Width()/3-2);
 m_AttrGrid.SetColumnWidth(2,GRect.Width()/3-2);

7、 对于最常见的一个功能,就是修改完毕后马上验证和保存的方法可以参考如下
修改
CGridCtrl::OnEndEditCell 函数,在该函数中添加验证函数比如
void CGridCtrl::OnEndEditCell(int nRow, int nCol, CString str)
{
    CString strCurrent = GetItemText(nRow, nCol);
 // self check
 str=CheckInputValid(nRow, nCol, str); // 你的验证函数
 // 其中strCurrent为修改前的值,str为修改后的值
 .....
对于修改后数据的保存,可以这么做
先建立映射
 ON_NOTIFY(GVN_ENDLABELEDIT, IDC_ATTR_GRID, OnEndEditGrid)
然后在 //{{AFX_MSG(CXmlViewerDlg) 中建立
 afx_msg void OnEndEditGrid(NMHDR* pNMHDR, LRESULT* pResult);
OnEndEditGrid(NMHDR* pNMHDR, LRESULT* pResult) 中实现数据保存操作
{
 NM_GRIDVIEW* pNmgv = (NM_GRIDVIEW*) pNMHDR;
 CCellID cii(pNmgv->iRow, pNmgv->iColumn);
 CString newValue=m_AttrGrid.GetItemText(cii.row,cii.col);

摘自http://blog.csdn.net/xgbing/archive/2007/10/08/1815509.aspx

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值