MFC GridControl 控件使用(1)
来源:互联网 发布:mac换输入法快捷键 编辑:程序博客网 时间:2024/04/28 10:48
1.将该控件涉及的.cpp(6个)和.h(8个)文件加入工程
2.从工具箱中拖入Custom Control,右击该控件属性,将Class项设置为MFCGridCtrl
3.在工程头文件中,#include "GridCtrl.h",且定义变量CGridCtrl m_ctrlGrid;
4.在工程定义文件中,在DoDataExchange函数,添加DDX_GridControl(pDX, IDC_CUSTOM1, m_ctrlGrid);(假设控件ID为IDC_CUSTOM1)
5.在需要用到表格控件的地方使用即可。譬如:m_ctrlGrid.SetRowCount(10);
m_ctrlGrid.SetColumnCount(3);
具体步骤:
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/*第一步中可以看到的ID值*/, m_AttrGrid/*第三步中定义的对象名*/);
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);
// 这里就得到了修改后的新值,可以在此进行操作了
}
- 顶
- 0
- MFC GridControl 控件使用(1)
- MFC GridControl 控件使用(2)
- gridcontrol控件的使用?
- wpf控件:gridcontrol使用
- Devexpress使用之:GridControl控件
- Dev控件GridControl 的使用
- DevExpress-GridControl控件-GridView使用
- Devexpress使用之:GridControl控件
- DevExpress控件-GridControl使用总结
- DevExpress-GridControl控件-GridView使用
- devexpress GridControl wpf控件使用
- DEV GridControl控件的使用总结
- DevExpress.XtraGrid.GridControl 控件的使用
- GridControl控件的使用总结 一
- DevExpress控件GridControl使用总结一
- DevExpress控件使用大全之GridControl
- 使用DevExpress导出GridControl控件数据到excel文件
- 在GridControl控件中使用SearchLookUpEdit构建数据快速输入
- iOS开发之基础视图——UIScrollView
- BZOJ4443 [Scoi2015]小凸玩矩阵
- java 匿名内部类
- 手机浏览器访问PC网站,跳转到wap手机版网站
- jetty----竟然有另外的超级功能服务转发器
- MFC GridControl 控件使用(1)
- log4j
- 【C#设计模式-备忘录模式】
- C++编程小九九
- Hibernate 一对一映射
- Android程序优化之异常终止数据恢复
- Base64编码
- CAS实现SSO单点登录原理
- UFLDL 11 卷积与池化 convolution pooling