宁县人民政府网铁王石鼓茶软件下载

一个优秀的网格控件CGridCtrl
一个优秀的网格控件CGridCtrl,一个优秀的网格控件CGridCtrl
一个优秀的网格控件CGridCtrl
作者:戴绍忠
&&网格控件的用途非常广泛,在我的一个项目中需要实现类似EXCEL的界面,为此我采用了一个优秀的CGridCtrl控件,其原作者为
Chris Maunder (原作者所写的MFC
Grid control的最新版本可以到/miscctrl/gridctrl.asp查阅)为了方便地实现的合并和撤销,我定制了如下的几个公有成员函数
SetCellCombine(); //设置单元格的合并特性
UndoCellCombine(); //取消合并
SetFixedCellCombine(); //
GetCellp(); //取得单元格对象指针
其具体的实现我在代码中添加了//want remove it? 和//注释语句来表明这段说明中的代码是用于合并。以方便以后的改变。
使用办法:
将名为:GridCtr.cpp,GridCtr.p,CellRange.h,GridDropTarget.cpp,GridDropTarget.h
InPlaceEdit.cpp,InPlaceEdit.h, InPlaceList.cpp,InPlaceList.h, MemDC.h,TitleTip.cpp,
TitleTip.h 到你的项目中然后导入。修改相应的头文件就可以了。
本文提供了示例代码,包含了全部源程序,示例程序的运行效果图如下:
& 搜索“图”或者“tulaoshi_com”加关注,每天最新的美食、、、美妆、、手工DIY等教程让你一手全掌握。推荐关注!【扫描下图可直接关注】
来源:/n/4229.html
点击查看更多与《》相关的文章>>
源码学习:一个简单的日历控件(1),源码学习:一个简单的日历控件(1)
源码学习:一个简单的日历控件(10),源码学习:一个简单的日历控件(10)
源码学习:一个简单的日历控件(11),源码学习:一个简单的日历控件(11)
源码学习:一个简单的日历控件(2),源码学习:一个简单的日历控件(2)
源码学习:一个简单的日历控件(4),源码学习:一个简单的日历控件(4)
源码学习:一个简单的日历控件(5),源码学习:一个简单的日历控件(5)
热门搜索:
PS教程 制作雪花冰冻文字效果
PS小清新图片的调色效果教程
鲁大师有什么用 教你怎么使用鲁大师
excel教程 工资表采用隔行插入排序
慢阻肺是一种慢性阻塞性肺部疾病,常发于烟民,长期在有害气体环境下生活的人也有一定几率患病,慢阻肺早期会出现慢性咽炎、咳嗽等现象,针对不同时期的慢阻肺疾病,我们可以通过以下方法来缓解治疗。
一说到高钙血症很多人便会想起血栓结石等疾病,人们的普遍印象高钙血症即是由肿瘤及肾衰竭疾病引起,由于高钙浓度过高导致,除此之外还有很多原因会引发高钙血症疾病,接下来我们就一起来研究高钙血症引发的原因吧!
桂枝汤是一剂有效的解表剂,具有多种资料功效,常见的有感冒呕吐盗汗等现象。在服用桂枝汤期间,需要注意一些问题,通过以下内容我们一起来看看服用桂枝汤需要注意的一些问题。
今天韩国方面传出好消息,指Rain及金泰希将荣升父母,金泰希所属公司LUA娱乐宣布金泰希目前已怀孕15周的喜讯,并表示她在短时间内会集中在胎教上。喜讯一出获大批粉丝送上祝福。那么怀孕15周需要注意什么?怀孕15周可以同房吗?
Photoshop是我们办公和学习时经常用到一个修图软件,Photoshop是目前所有修图软件中最为强大的一个软件。我们可以用Photoshop制作一些图形或者图标。那么,怎样用Photoshop制作立体木盒图标呢?下面就一起来看看。
iPhone手机是现在人们日常生活中经常使用的一种通讯工具。而iPhone6s因为性价比较高被许多人喜爱着。但是在我们使用iPhone6s的过程中,有时候会出现一些问题,此时我们需要拆机检查修理。那么,iPhone6s如何拆机呢?下面就分享一下iPhone6s的拆机教程。
photoshop是我们日常工作中常见的一种修图工具,与其他修图软件相比,photoshop的功能非常强大。在用photoshop修图时,经常会需要给景点制造一些特殊的自然风光效果。那么,如何用photoshop给长城制造夕阳效果?下面就一起来看看吧。
2017年最受欢迎的生活服务APP!!生活服务类App的出现为日常生活带来极大便利,我们可以通过手机客户端预约各种家政服务,足不出户就能够享受实惠、便捷的生活服务,那么接下来我为大家推荐一些生活中必备生活app。
由于现在抢红包大热起来,很多app都开始支持发红包抢红包了,因此也出现了微信抢红包神器,可以自动抢微信红包,肯定比认为手动操作快,有消息就会自动打开,然后打开红包。今天就给大家分享2017微信自动抢红包神器大全。
2017手机赚钱软件排行榜!!很多朋友都在苦恼每天的钱不够话,空闲时间不知道怎么打发,总想寻找一种简单的赚钱方式,我们的手机app就有很多,下面具体给大家介绍手机赚钱软件有哪些,总有一款你中意的。
经常玩微信的朋友都知道,微信小程序已经全面上线了,对于小程序的出现是否会引发App变革众说纷纭,但不可否认的是小程序能够带给用户及产商一定的便利,那么今天为大家汇总目前上线的一些实用小程序。
男女交往一直都是人们比较关注的一个问题,都说相爱容易,相处不易,交往过的朋友应该都能深刻的体会到,女生常常抱怨着让男生理解自己,但男生也希望多体谅一下他们。尤其不要老是问一些无法回答的问题来考验他们。
很多朋友都信风水一说,对于自己家里房屋客厅的装修也是有一定要求的,因为客厅的风水关系着整个家居的运势,更关系着主人的财运与健康,因而客厅里的风水禁忌是需要我们谨慎注意的,那么风水学中客厅风水禁忌有哪些呢?
春天已经来临了,夏天也不远了,新的一才刚刚开始,时尚爱美的美眉们最关注的就是春夏服装设计的流行趋势了,早早的把握住时尚趋势走在流行的最尖端,今天就给大家整理分享2017春夏女装设计流行趋势 ,你绝对不能错过的亮点。关于使用gridctrl
最近写一个软件的同时用到了 MFCgridctrl 这个控件,现在就简要写一下步骤
1、首先要使用MFCgridctrl 必须要在用到的系统中导入gridctrl文件夹的全部cpp和h文件(方法
project--&add to project
--&files),这时候可以在类的试图中看到CGridCtrl CCellID等等一些类
2、加入一个Custom Control,将Class设为: MFCGridCtrl 记住要 MFCGridCtrl 这个名字,原因是
该类用registerClass注册了该类,Style等可以随便设置
3、在使用类中,定义一个对象: CGridCtrl
m_AttrG注意一定要定义一个对象,否则该类如果是窗口类的话将用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);
/// 来设置单元格是否只读
&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
&&& 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);
newValue=m_AttrGrid.GetItemText(cii.row,cii.col);
&// 这里就得到了修改后的新值,可以在此进行操作了
本文来自CSDN博客,转载请标明出处:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。18091人阅读
C/C++(1)
图片传不来,需要完整文档,的可以私下找我要哈
本文记录了作者在学习了解并使用GridCtrl的过程中的心得体会,希望能够对今后学习使用GridCtrl控件的其他同事有所帮助,使其更快上手。
1)& CGridCtrl学习指南
网址:http://lizhilin.happy./blog/static//
2)& CGridCtrl使用详解
网址:http://blog.csdn.net/incwar/archive//3807283.aspx
3)& CGridCtrl源代码一份。需要的同事,可以OA上发邮件给我。
4)& 作者亲手制做的对于CGridCtrl的使用实例:GridCtrlTest。需要的同事,可以OA上发邮件给我。
GridControl控件是一款非常优秀的网格控件,在VC平台上的用途非常广泛也非常灵活。可以将其看做上是在CListCtrl基础上的定制和延伸。
GridControl具备以下操作和功能:
u&&&&&& 使用鼠标可以进行单元格的选择,还可以辅助ctrl和shift的组合键进行选
择。也可以取消选择。
u&&&&&& 单元格可以有不同文本和背景颜色的个性化设置
u&&&&&& 单元格可以有字体的个性化设置
u&&&&&& 单元格可以标注&只读&或者其他的状态设置及检测
u&&&&&& 单元格的拖放动作
u&&&&&& 可以对任何列或行固定
u&&&&&& Ctrl-C, Ctrl-X和Ctrl-V执行拷贝、剪切、粘贴操作,Ctrl-A全选
u&&&&&& 当单元格成为焦点,并且在单元格的编辑区域按下字符键,就意味着在
那个单元格进行编辑了
u&&&&&& 可以在单元格中加入图片
u&&&&&& 对大型数据可以使用&虚拟&模式
u&&&&&& 充分的打印支持,支持文档/浏览环境(包括打印预览)或是基于会话的应用(不支持打印预览)
u&&&&&& 可选的&列表模式&,包括对行的全选或单选,还有单击列标题提示进行插入的操作。
u&&&&&& 众多的虚函数可以很容易对控件进行功能扩充
u&&&&&& 单元格的标题提示太小不能显示数据
u&&&&&& 可以隐藏行和列
u&&&&&& 行和列可以按照大小进行重排,还可以取消对行、列或两者的排序。
u&&&&&& 双击区分点,行或者列可以按照大小自动排序
GridControl包含一个拖曳对象(CGridDropTarget)和一个标题提示对象(CTitleTip),前者处理拖曳操作,后者在单元格物理空间在最大限度内不足以显示其内容时可以显示出其内容。而CCellID类是一个用来参考单元格范围的便利的辅助类。此外,GridControl还包含从CGridCell派生下来的单元格对象。
Grid单元格可以是任何类型,这些类型都是从CGridCell派生下来的,基类中定义了基本的数据存储和编辑操作。扩充的两个类CgridCellCombo和CGridLCellCheck示范了如何创建自己的单元格类。
单元格有两种主要状态即固定和非固定。固定的单元格通常在Grid的左上方,并且不会随着Grid的卷动而移动,并且不能进行编辑,通常即这些单元格包含列和行的标题部分。而非固定的单元格构成了Grid的内部,你可以对它进行编辑和选择。
CGridCtrl是控件类,派生于CWnd类,代表整个网格对象,具备了针对网格的所有基本操作,如设置网格行和列,设置网格外观,设置单元格信息等。
下面介绍控件初使化过程中的一个重要函数CGridCtrl::Create:
函数申明:BOOL CGridCtrl::Create(const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwStyle)
函数作用:创建控件
参数说明:
&&&&&& rect:控件位置信息
&&&&&& pParetWnd:父窗口指针
&&&&&& nID:为控件指定的ID,作为本次创建的控件对象的标识
&&&&&& dwStyle:控件风格,默认值为:WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE。& 常用风格请参见下表:
控件风格ID
说明窗口为子窗口
WS_OVERLAPPED
重叠窗口,通常有标题条和边界
弹出式窗口,不能与WS_CHILD一起使用
WS_VISIBLE
WS_DISABLED
初使状态为禁止
WS_VSCROLL
具有垂直滚动条
WS_HSCROLL
具有水平滚动条
WS_TABSTOP
可用TAB键移动到下一个具有WS_TABSTOP风格的控件
结果返回:成功返回TRUE;失败则返回FALSE
注:关于CGridCtrl的其它常用函数请参见本文2.4
CGridCellCheck继承于CGridCell,是一个复选框风格的单元格类。
2.3.2.1&&&& 主要函数
1)GetCellExtent (重载)
函数申明:virtual CSize GetCellExtent(CDC* pDC);
函数作用:获得单元格大小
参数说明:
&&&&&& pDC: 设备对象指针
结果返回:CSize对象,描述单元格大小
2) OnClick (重载)
函数申明:virtual void OnClick( CPoint PointCellRelative);
函数作用:单击时,改变复选框状态
参数说明:
&&&&&& PointCellRelative: 单元格的相对坐标
结果返回:void
3) GetTextRect(重载)
函数申明:virtual BOOL GetTextRect( LPRECT pRect);
函数作用:获取单元格文本的位置信息
参数说明:
&&&&&& pRect: 输出文本的位置信息
结果返回:成功返回TRUE;失败返回FALSE
4) Draw(重载)
函数申明:virtual BOOL Draw(CDC* pDC, int nRow, int nCol, CRect rect, BOOL bEraseBkgnd);
函数作用:根据当前复选框的状态重绘复选框
参数说明:
&& &&& pDC : 设备对象指针
&&&&&& nRow: 指定行Index
&&&&&& nCol: 指定列Index
&&&&&& rect: 重绘区域
&&&&&& bEraseBkgnd: 重绘前是否擦除背景
结果返回:成功返回TRUE;失败返回FALSE
5) SetCheck
函数申明:void CGridCellCheck::SetCheck(BOOL bChecked)
函数作用:设置复选框的状态
参数说明:
&&&&&& bChecked:设置复选框的状态
结果返回:void
6) GetCheck
函数申明:BOOL CGridCellCheck::GetCheck()
函数作用:获取复选框的状态
参数说明:
&&&&&& bChecked:设置复选框的状态
结果返回:复选框被选中,返回TRUE;否则返回FALSE
2.3.2.2&&&& 设置单元格类型
若要设置某一个单元格为复选框类型,则需调用:
BOOL CGridCtrl::SetCellType(int nRow, int nCol, CRuntimeClass* pRuntimeClass)
若要让所有新创建的单元格都是复选框类型的的,则需调用:
BOOL CGridCtrl::SetDefaultCellType( CRuntimeClass* pRuntimeClass)
注:详情参见:本文章节2.4.2
CGridCellCombo继承于CGridCell,是一个下拉框风格的单元格类。
2.3.3.1&&&& 主要函数
1)GetCellExtent (重载)
函数申明:virtual CSize GetCellExtent(CDC* pDC);
函数作用:获得单元格大小
参数说明:
&&&&&& pDC: 设备对象指针
结果返回:CSize对象,描述单元格大小
2) Edit (重载)
函数申明:virtual BOOL& Edit(int nRow, int nCol, CRect rect, CPoint point, UINT nID, UINT nChar);
函数作用:用户触发此事件,控件进入编辑状态。本质上就是创建ComboBox控件来负责编辑
参数说明:
&&&&&& nRow: 指定行Index
&&&&&& nCol: 指定列Index
&&&&&& rect: 编辑区域
&&&&&& point: 无意义
&&&&&& nID :被创建的ComboBox的ID
&&&&&& nChar:当通过按键触发该编辑事件时,表示按下的第一个键
结果返回:成功返回TRUE;否則返回FALSE
3) EndEdit(重载)
函数申明:virtual BOOL EndEdit();
函数作用:编辑结束
参数说明:无
结果返回:成功返回TRUE;失败返回FALSE
4) GetTextRect(重载)
函数申明:virtual BOOL GetTextRect( LPRECT pRect);
函数作用:获取单元格文本的位置信息
参数说明:
&&&&&& pRect: 输出文本的位置信息
结果返回:成功返回TRUE;失败返回FALSE
5) Draw(重载)
函数申明:virtual BOOL Draw(CDC* pDC, int nRow, int nCol, CRect rect, BOOL bEraseBkgnd);
函数作用:重绘单元格控件
参数说明:
&&&&&& pDC : 设备对象指针
&&&&&& nRow: 指定行Index
&&&&&& nCol: 指定列Index
&&&&&& rect: 重绘区域
&&&&&& bEraseBkgnd: 重绘前是否擦除背景
结果返回:成功返回TRUE;失败返回FALSE
6) SetStyle
函数申明:void& SetStyle(DWORD dwStyle)
函数作用:设置ComboBox控件的风格
参数说明:
&&&&&& dwStyle: ComboBox风格。详见下表:
风格ID
CBS_SIMPLE
下拉列表总是可见,控件可编辑
CBS_DROPDOWN
下拉列表在用户点击时可见,控件可编辑
CBS_DROPDOWNLIST
下拉列表在用户点击时可见,控件不可编辑
下拉列表选择项排序
CBS_AUTOHSCROLL
下拉列表自动添加滚动条
CBS_UPPERCASE
下拉列表选择项英文大写显示
CBS_LOWERCASE
下拉列表选择项英文小写显示
CBS_DISABLENOSCROLL
下拉列表滚动条禁用
结果返回:void
7) GetStyle
函数申明:DWORD GetStyle()
函数作用:获得ComboBox控件的风格属性
参数说明:无
结果返回:返回ComboBox控件的风格属性
8) SetOptions
函数申明:void SetOptions(const CStringArray& ar)
函数作用:设置ComboBox下拉列表选项
参数说明:
&&&&&& ar: 传入字符串数组,作为下拉列表选项
结果返回:void
2.3.3.2&&&& 设置单元格类型
若要设置某一个单元格为下拉框类型,则需调用:
BOOL CGridCtrl::SetCellType(int nRow, int nCol, CRuntimeClass* pRuntimeClass)
若要让所有新创建的单元格都是下拉框类型的的,则需调用:
BOOL CGridCtrl::SetDefaultCellType( CRuntimeClass* pRuntimeClass)
注:详情参见:本文章节2.4.2
常用函数说明
2.4.1.1&&&& SetRowCount
函数原型: BOOL SetRowCount(int nRows)
函数作用: 设置行的数目(包括固定行)
参数说明:
nRows : 行数目
结果返回:如果成功,返回TRUE;否则返回FALSE
2.4.1.2&&&& SetColumnCount
函数原型:BOOL SetColumnCount(int nCols)
函数作用:设置列的数目(包括固定列)
参数说明:
&&&&&& nCols: 列数目
结果返回:如果成功,返回TRUE;否则返回FALSE
2.4.1.3&&&& SetFixedRowCount
函数原型:BOOL SetFixedRowCount(int nFixedRows = 1)
函数作用:设置固定行的数目
参数说明:
&&&&&& nFixedRows: 固定行数目
结果返回:如果成功,返回TRUE;否则返回FALSE
2.4.1.4&&&& SetFixedColumnCount
函数原型:BOOL SetFixedColumnCount(int nFixedCols = 1)
函数作用:设置固定列的数目
参数说明:
&&&&&& nFixedRows: 固定列数目
结果返回:如果成功,返回TRUE;否则返回FALSE
2.4.1.5&&&& GetRowHeight
函数原型:int GetRowHeight(int nRow) const
函数作用:获取由nRow指定行的高度
参数说明:
&&&&&& nRow:指定行Index
结果返回:返回指定行高度
2.4.1.6&&&& SetRowHeight
函数原型:BOOL SetRowHeight(int row, int height)
函数作用:设定由row指定行的高度为height
参数说明:
&&&&&& row: 指定行Index
&&&&&& height: 设置的高度
结果返回:如果成功,返回TRUE;否则返回FALSE
2.4.1.7&&&& GetColumnWidth
函数原型:int GetColumnWidth(int nCol) const
函数作用:获取由nCol指定列的宽度
参数说明:
&&&&&& nCol:指定列Index
结果返回:返回指定列宽度
2.4.1.8&&&& SetColumnWidth
函数原型:BOOL SetColumnWidth(int col, int width)
函数作用:设定由col指定列的宽度为width
参数说明:
&&&&&& col: 指定列
&&&&&& width: 设置的宽度
结果返回:如果成功,返回TRUE;否则返回FALSE
2.4.1.9&&&& GetFixedRowHeight
函数原型:int GetFixedRowHeight() const
函数作用:获取固定行的高度
参数说明:无
结果返回:返回固定行的高度
2.4.1.10 GetFixedColumnWidth
函数原型:int GetFixedColumnWidth() const
函数作用:获取固定列的高度
参数说明:无
结果返回:返回固定列的高度
2.4.1.11 GetVirtualHeight
函数原型:long GetVirtualHeight() const
函数作用:获取所有行的合并高度
参数说明:无
结果返回:返回所有行的合并高度
2.4.1.12 GetVirtualWidth
函数原型:long GetVirtualWidth() const
函数作用:获取所有列的合并宽度
参数说明:无
结果返回:返回所有列的合并宽度
2.4.2.1&&&& SetCellType
函数原型:BOOL SetCellType(int nRow, int nCol, CRuntimeClass* pRuntimeClass);
函数作用:定义响应单元格类的类型
参数说明:
&&&&&& nRow:指定行
&&&&&& nCol:指定列
pRunTimeClass:单元格类型,在实际传入该参数时,需要以RUN_TIIME(类名)的形式。比如RUN_TIME(CGridCellCheck)、RUN_TIME(CGridCellCombo)、
RUN_TIME(CGridCellNumeric)、RUN_TIME(CGridDefaultCell)
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.2.2&&&& SetDefaultCellType
函数原型:BOOL SetDefaultCellType(CRuntimeClass* pRuntimeClass);
函数作用:为之后新创建的单元格设置默认属性
参数说明:
pRunTimeClass:单元格类型,在实际传入该参数时,需要以RUN_TIIME(类名)的形式。比如RUN_TIME(CGridCellCheck)、RUN_TIME(CGridCellCombo)、
RUN_TIME(CGridCellNumeric)、RUN_TIME(CGridDefaultCell)
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.2.3&&&& SetItemText
函数原型:BOOL SetItemText(int nRow, int nCol, LPCTSTR str)
函数作用:设置指定单元格的文本内容
参数说明:
&&&&&& nRow:指定行
&&&&&& nCol:指定列
str:字符串
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.2.4&&&& SetItemImage
函数原型:BOOL SetItemImage(int nRow, int nCol, int iImage)
函数作用:设置指定单元格的图形索引。调用函数前,需要设置控件图形列表。详见
&&&&&&&&&& SetImageList
参数说明:
&&&&&& nRow:指定行
&&&&&& nCol:指定列
iImage:图形索引,从0开始
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.2.5&&&& SetItemState
函数原型:BOOL SetItemState(int nRow, int nCol, UINT state)
函数作用:设置给定单元格的状态
参数说明:
&&&&&& nRow:指定行
&&&&&& nCol:指定列
state:状态ID。详见下表:
GVIS_FOCUSED
单元格成为焦点
GVIS_SELECTED
单元格被选中
GVIS_DROPHILITED
单元格被高亮显示
GVIS_READONLY
单元格只读
GVIS_FIXED
单元格固定
GVIS_FIXEDROW
单元格是固定行的一部分
GVIS_FIXEDCOL
单元格是固定列的一部分
GVIS_MODIFIED
单元格被修改过
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.2.6&&&& SetItemBkColour
函数原型:BOOL SetItemBkColour(int nRow, int nCol, COLORREF cr = CLR_DEFAULT)
函数作用:设置指定单元格的背景颜色
参数说明:
&&&&&& nRow:指定行
&&&&&& nCol:指定列
cr :颜色,可以通过宏RGB(int,int,int)来构建
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.2.7&&&& SetItemFont
函数原型:BOOL SetItemFont(int nRow, int nCol, LOGFONT* lf)
函数作用:设置指定单元格的字体
参数说明:
&&&&&& nRow:指定行
&&&&&& nCol:指定列
lf :字体格式。LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格。详见LOGFONT结构体定义。
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.2.8&&&& SetItemFgColour
函数原型:BOOL SetItemFgColour(int nRow, int nCol, COLORREF cr = CLR_DEFAULT)
函数作用:设置指定单元格的前景颜色
参数说明:
&&&&&& nRow:指定行
&&&&&& nCol:指定列
cr :颜色,可以通过宏RGB(int,int,int)来构建
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.3.1&&&& InsertColumn
函数原型:int InsertColumn(LPCTSTR strHeading, UINT nFormat, int nCol = -1)
函数作用:在nCol指定的地方插入一列
参数说明:
StrHeading: 列标题头
nFormat : 列的格式。格式选项见下表:
竖直居上对齐
水平居左对齐
水平居中对齐
水平居右对齐
DT_VCENTER
竖直居中对齐
竖直居下对齐
DT_WORDBREAK
DT_SINGLELINE
nCol: 指定列, 如果 nCol&0则在末尾插入一列.
结果返回 :返回插入列的位置
2.4.3.2&&&& InsertRow
函数原型:int InsertRow(LPCTSTR strHeading, int nRow = -1)
函数作用 :在nRow处插入一行, 此行的单元格的格式与其同列的第一行单元格格式相同
参数说明:
StrHeading: 行标题头
nRow: 指定行,如果nRow&0则在末尾插入一行
结果返回 :返回插入行的位置
2.4.3.3&&&& DeleteColumn
函数原型:BOOL DeleteColumn(int nColumn)
函数作用 :删除nColumn指定的列
参数说明:
nColumn: 指定列
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.3.4&&&& DeleteRow
函数原型:BOOL DeleteRow(int nRow)
函数作用 :删除nColumn指定的列
参数说明:
nRow: 指定行
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.3.5&&&& DeleteAllItems
函数原型:BOOL DeleteAllItems()
函数作用:删除Grid中的所有行和内容
参数说明:无
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.3.6&&&& DeleteNonFixedRows
函数原型:BOOL DeleteAllItems()
函数作用:删除所有非固定行
参数说明:无
结果返回:如果成功,返回TRUE; 否则返回FALSE
2.4.3.7&&&& AutoSizeRow
函数原型:BOOL AutoSizeRow(int nRow, BOOL bResetScroll=TRUE)
函数作用:自动调整行的大小与最大行一样
参数说明:
&&&&&& nRow: 指定行
&&&&&& bResetScroll: 如果bResetScroll是 TRUE那么滚动条也会被重置
结果返回:如果成功,返回TRUE; 否则返回FALSE
2.4.3.8&&&& AutoSizeColumn
函数原型:BOOL AutoSizeColumn(int nCol, UINT nAutoSizeStyle = GVS_DEFAULT, BOOL bResetScroll = TRUE)
函数作用:自动调整列的大小与最大列一样
参数说明:
&&&&&& nCol: 指定列
&&&&&& nAutoSizeStyle: 调整的方式。详见下表:
GVS_Default
GVS_HEADER
仅用于列的固定单元格数据
仅用于列的非固定单元格数据
固定列和非固定列都适用
&&&&&& bResetScroll: 如果bResetScroll是 TRUE那么滚动条也会被重置
结果返回:如果成功,返回TRUE; 否则返回FALSE
2.4.3.9&&&& AutoSizeRows
函数原型:void AutoSizeRows()
函数作用:自动调整所有行的大小
参数说明:无
结果返回:void
2.4.3.10 AutoSizeColumns
函数原型:void AutoSizeColumns(UINT nAutoSizeStyle=GVS_DEFAULT)
函数作用:自动调整所有列的大小
参数说明:
&& &&& nAutoSizeStyle: 调整的方式。详见下表:
GVS_Default
GVS_HEADER
仅用于列的固定单元格数据
仅用于列的非固定单元格数据
固定列和非固定列都适用
结果返回:void
2.4.3.11 AutoSize
函数原型:void AutoSize(UINT nAutoSizeStyle = GVS_DEFAULT)
函数作用:自动调整所有行和列的大小
参数说明:
&&&&&& nAutoSizeStyle: 调整的方式。详见下表:
GVS_Default
GVS_HEADER
仅用于列的固定单元格数据
仅用于列的非固定单元格数据
固定列和非固定列都适用
结果返回:void
2.4.3.12 RedrawRow
函数原型:BOOL RedrawRow(int row)
函数作用 :重画指定行
参数说明:
row: 指定行
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.3.13 RedrawColumn
函数原型:BOOL RedrawColumn(int col)
函数作用 :重画指定列
参数说明:
row: 指定列
结果返回 :如果成功,返回TRUE; 否则返回FALSE
2.4.3.14 Refresh
函数原型:BOOL Refresh()
函数作用 :重画整个Grid
参数说明:无
结果返回:如果成功,返回TRUE; 否则返回FALSE
2.4.4.1&&&& SetImageList
函数原型:void SetImageList(CImageList* pList)
函数作用 :设置Grid的当前图形列表,它拷贝的只是列表的指针而非列表本身
参数说明:
&&&&&& pList:图形列表对象
结果返回:void
2.4.4.2&&&& SetGridLines
函数原型:void SetGridLines(int nWhichLines = GVL_BOTH)
函数作用 :设置哪些(如果有的话)线条不可见
参数说明:
&&&&&& nWhichLines:网格线的选择,详见下表:
无网格线
仅仅有水平网格线
仅仅有垂直网格线
水平和垂直网格线都有
结果返回:void
2.4.4.3&&&& SetEditable
函数原型:void SetEditable(BOOL bEditable = TRUE)
函数作用 :设置Grid是否可以编辑
参数说明:
&&&&&& bEditable:是否可编辑
结果返回:void
2.4.4.4&&&& SetSingleRowSelection
函数原型:void SetSingleRowSelection(BOOL bSing = TRUE)
函数作用 :将G rid设置成(或不是)单行选择模式,这种模式只有在排序模式下有效。当处在这种模式下,每次只能选择一行,所以整个Grid表现看起来就好象是一个多列的列表框
参数说明 :
&&&&&& bSing:是否单选
结果返回:void
2.4.4.5&&&& SetSingleColSelection
函数原型:void SetSingleColSelection(BOOL bSing = TRUE)
函数作用 :将Grid设置成(或不是)单列选择模式,在这种模式下,每次只能选择一列
参数说明 :
&&&&&& bSing:是否单选
结果返回:void
2.4.4.6&&&& EnableSelection
函数原型:void EnableSelection(BOOL bEnable = TRUE)
函数作用 :设置Grid的单元格是否可选
参数说明 :
&&&&&& bEnable:是否可选
结果返回:void
2.4.4.7&&&& SetFixedColumnSelection
函数原型:void SetFixedColumnSelection(BOOL bSelect)
函数作用 :设置当点击固定列时,是否选择其下面的单元格
参数说明 :
&&&&&& bSelect: 是否选择其下面的单元格
结果返回:void
2.4.4.8&&&& SetFixedRowSelection
函数原型:void SetFixedRowSelection(BOOL bSelect)
函数作用 :设置当点击固定行时,是否选择其旁边的单元格
参数说明 :
&&&&&& bSelect: 是否选择其旁边的单元格
结果返回:void
2.4.4.9&&&& EnableDragAndDrop
函数原型:void EnableDragAndDrop(BOOL bAllow = TRUE)
函数作用 :设置是否开启拖曳动作
参数说明 :
&&&&&& bAllow: 是否开启拖曳动作
结果返回:void
2.4.4.10 SetHandleTabKey
函数原型:void SetHandleTabKey(BOOL bHandleTab = TRUE)
函数作用 :设置是否启用TAB键来移动选择单元格
参数说明 :
&&&&&& bHandleTab: 是否启用TAB键来移动选择单元格
结果返回:void
2.4.4.11 EnableTitleTips
函数原型:void EnableTitleTips(BOOL bEnable = TRUE)
函数作用 :设置是否使用标题提示
参数说明 :
&&&&&& bEnable: 是否使用标题提示
结果返回:void
2.4.4.12 SetTrackFocusCell
函数原型:void SetTrackFocusCell(BOOL bTrack)
函数作用 :设置同行/列中的固定单元格作为焦点单元格时是否高亮显示并且使用凹陷边缘
参数说明 :
bTrack: 是否高亮显示并且使用凹陷边缘
结果返回:void
2.4.4.13 SetFrameFocusCell
函数原型:void SetFrameFocusCell(BOOL bFrame)
函数作用 :设置焦点单元格是否高亮显示并且加上外边框
参数说明 :
&&&&&& bFrame: 是否高亮显示并且加上外边框
结果返回:void
2.4.5.1&&&& SetGridBkColor
函数原型:void SetGridBkColor(COLORREF clr)
函数作用 :设置控件的背景颜色(固定和非固定单元格之外的区域)
参数说明 :
&& && clr: 背景颜色。可用RGB(int,int,int) 来构建
结果返回:void
2.4.5.2&&&& SetGridLineColor
函数原型:void SetGridLineColor(COLORREF clr)
函数作用 :设置网格线的颜色
参数说明 :
&& && clr: 网格线的颜色。可用RGB(int,int,int) 来构建
结果返回:void
2.4.5.3&&&& SetTitleTipBackClr
函数原型:void SetTitleTipBackClr(COLORREF clr = CLR_DEFAULT)
函数作用 :设置标题提示的背景颜色
参数说明 :
&& && clr: 标题提示的背景颜色。可用RGB(int,int,int) 来构建
结果返回 :void
2.4.5.4&&&& SetTitleTipTextClr
函数原型:void SetTitleTipTextClr(COLORREF clr = CLR_DEFAULT)
函数作用 :设置标题提示的文本颜色
参数说明 :
&& && clr: 标题提示的文本颜色。可用RGB(int,int,int) 来构建
结果返回 :void
2.4.5.5&&&& SetTextColor
函数原型:void SetTextColor(COLORREF clr)
函数作用 :设置非固定单元格中的文本颜色
参数说明 :
&& && clr: 非固定单元格中的文本颜色。可用RGB(int,int,int) 来构建
结果返回 :void
2.4.5.6&&&& SetTextBkColor
函数原型:void SetTextBkColor(COLORREF clr)
函数作用 :设置非固定单元格的背景颜色
参数说明 :
&& && clr: 非固定单元格的背景颜色。可用RGB(int,int,int) 来构建
结果返回 :void
2.4.5.7&&&& SetFixedTextColor
函数原型:void SetFixedTextColor(COLORREF clr)
函数作用 :设置固定单元格的文本颜色
参数说明 :
&& && clr: 固定单元格的文本颜色。可用RGB(int,int,int) 来构建
结果返回 :void
2.4.5.8&&&& SetBkColor
函数原型:void SetBkColor(COLORREF clr)
函数作用 :设置控件的背景颜色 (单元格之外的区域)
参数说明 :
&& && clr: 控件的背景颜色。可用RGB(int,int,int) 来构建
结果返回 :void
2.4.5.9&&&& SetFixedBkColor
函数原型:void SetFixedBkColor(COLORREF clr)
函数作用 :设置固定单元格的背景颜色(单元格之外的区域)
参数说明 :
&& && clr: 固定单元格的背景颜色。可用RGB(int,int,int) 来构建
结果返回 :void
2.4.6.1&&&& 常用消息
void& OnClick(NMHDR* pNMHDR, LRESULT* pResult)
void& OnDblClk(NMHDR* pNMHDR, LRESULT* pResult)
NM_KILLFOCUS
控件失去鼠标焦点
void& OnKillFocus(NMHDR* pNMHDR, LRESULT* pResult)
void& OnRClick(NMHDR* pNMHDR, LRESULT* pResult)
void& OnRdbClk(NMHDR* pNMHDR, LRESULT* pResult)
NM_SETFOCUS
控件获得鼠标焦点
void& OnSetFocus(NMHDR* pNMHDR, LRESULT* pResult)
GVN_BEGINDRAG
发生左键拖曳时
void& OnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult)
GVN_BEGINLABELEDIT
编辑Label时
void OnBeginLabelEdit(NMHDR* pNMHDR,,LRESULT* pResult)
GVN_BEGINRDRAG
发生右键拖曳时
void& OnBeginRDrag(NMHDR* pNMHDR, LRESULT* pResult)
GVN_COLUMNCLICK
单击一列时
void& OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult)
GVN_DELETEITEM
删除某一项时
void& OnDeleteItem(NMHDR* pNMHDR, LRESULT* pResult)
GVN_ENDLABELEDIT
结束Label编辑时
void& OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult)
GVN_SELCHANGING
选择改变时
void& OnSelChanging(NMHDR* pNMHDR, LRESULT* pResult)
GVN_SELCHANGED
选择改变后
void& OnSelChanged(NMHDR* pNMHDR, LRESULT* pResult)
GVN_GETDISPINFO
void& OnGetDispInfo(NMHDR* pNMHDR, LRESULT* pResult)
GVN_ODCACHEHINT
void& OnOdcachehint(NMHDR* pNMHDR, LRESULT* pResult)
2.4.6.2&&&& 添加消息映射
若想针对CGridCtrl添加消息处理,只需要在父窗口中通过ON_NOTIFY添加消息映射,并实现响应函数即可。
消息映射方式如下:
ON_NOTIFY(消息ID,控件ID,响应函数)
如下图所示:
注,消息映射的实例请参见:本文章节3.2.8
本例使用了一些GridControl的基础功能,包括:设置固定行和列、设置背景颜色,使用CheckBox和ComboBox类型的单元格,消息事件映射,插入图片等。
我们首先在VC6.0上建立一个名叫GridCtrlTest的基于对话框的项目。然后导入GridControl的源文件到项目对应的文件夹下,并在项目中引用以下头文件:GridCtrl.h、GridCellCheck.h、GridCellCombo.h。
Grid的基本类是源于CWnd的CgridCtrl。为了使用它,你可以使用微软的VC++的对话框编辑器,把一个普通的控件放在对话框上,并且输入&MFCGridCtrl&(不包括引号)作为类名。Grid的子类使用DDX机制(可以通过ClassWizard来进行默认设置),使用DDX_GridControl函数代替DDX_Control(可以通过手动设置ClassWizard的输入来实现)。这些保证你的控件作为一个注册对象而不会产生一些莫名其妙的WIN95问题。
另外,也可以选择使用CGridCtrl::Create()。
本文实例采用的是后一种方法。具体过程如下:
首先,自定义一个CGridCtrl的派生类,CMyGridCtrl。添加函数:
&&&&& void SetColumnColor(int nCol, COLORREF clr);//设置某一列的背景颜色
&&&&& void SetRowColor(int nRow, COLORREF& clr);//设置某一行的背景颜色
void LoadImageList(int nImageId,int nSize);//加载图片列表
void SetCellCombo(int nRow, int nCol,& CStringArray& items);//设置某个单元格为ComboBox
void SetCellCheck(int nRow, int nCol, bool isCheck);//设置某个单元格为CheckBox
然后,利用可视编辑器在对话框上拖放一个picture控件,用来对GridCtrl控件定位用。定义其ID为:IDC_GRID_POS
接着,在CGridCtrlTestDlg类中定义一个CMyGridCtrl的成员变量:m_GridCtrl。然后再在CGridCtrlTestDlg::OnInitDialog()中添加对控件的初始化代码:&&
CWnd* pWnd = GetDlgItem(IDC_GRID_POS);//获取界面上占位控件的实例
CRect rect1, rect2;
int captionHeight = ::GetSystemMetrics(SM_CYCAPTION);
int cxframe = GetSystemMetrics(SM_CXFRAME);
int cyframe = GetSystemMetrics(SM_CYFRAME);
this-&GetWindowRect(&rect2);//获取对话框窗口的位置信息
&if (pWnd)
&&&&& pWnd-&GetWindowRect(&rect1); //获取占位控件的位置信息
//创建控件
m_GridCtrl=new CMyGridCtrl();
m_GridCtrl-&Create(CRect(rect1.left - rect2.left - cxframe, rect1.top-rect2.top - cyframe-captionHeight, rect1.left + rect1.Width() - rect2.left,rect1.top + rect1.Height() - rect2.top - captionHeight), this, IDC_GRID)
//设置行数 和列数
m_GridCtrl-&SetColumnCount(5);
m_GridCtrl-&SetRowCount(5);
这样一个简单的实例就已经制做成功。点击运行,效果如下图:
固定行和列相关于GridCtrl的标题行和标题列。通过以下代码,我们对实例中的grid的标题行、标题列进行设置:
//设置第一行和第一列为控件固定行和列,即标题行和标题列
m_GridCtrl-&SetFixedRowCount(1);
m_GridCtrl-&SetFixedColumnCount(1);
m_GridCtrl-&AutoSizeColumn(0);//第一列自动调节宽度
//设置固定行标题
m_GridCtrl-&SetItemText(0,0,&序号&);
m_GridCtrl-&SetItemText(0,1,&图片&);
m_GridCtrl-&SetItemText(0,2,&状态&);
m_GridCtrl-&SetItemText(0,3,&主题&);
//设置固定列序号
for (int i=1;i&5;i++)
&&&&& s.Format(&%d&,i);
&&&&& m_GridCtrl-&SetItemText(i,0,s);
运行后,效果图如下所示:
插入的图片的格式是.bmp格式,将这个bmp图片拷到资源文件中,然后导入到程序中,定义其资源ID为IDB_BITMAP_S。
加载图片列表的代码已经封装到了CMyGridCtrl::LoadImageList(int nImageId,int nSize)中,具体如下:
m_ImageList.Create(nImageId,nSize,1,RGB(255,255,255));
this-&SetImageList(&m_ImageList);
在GridTestDlg类中,加入如下代码:
//加载图片列表
m_GridCtrl-&LoadImageList(IDB_BITMAP_S,16);//图片大小为16*16
//设置第二列图片
for ( i=1;i&5;i++)
&&&&& m_GridCtrl-&SetItemImage(i,1,i%4);//设置所插入图片在图片列表的Index
运行后效果如下图所示:
设置单元格类型为CGridCellCheck类型,为了方便操作,已被封装到了
CMyGridCtrl::SetCellCheck(int nRow, int nCol, bool isCheck)中,具体代码如下:
//设置单元格类型
this-&SetCellType(nRow,nCol,RUNTIME_CLASS(CGridCellCheck));
CGridCellBase* pCell=this-&GetCell(nRow,nCol);
if (pCell!=NULL&&pCell-&IsKindOf(RUNTIME_CLASS(CGridCellCheck)))
&&&&& //设置checkBox的状态
&&&&& ((CGridCellCheck*)pCell)-&SetCheck(isCheck);
然后在CGridCtrlTestDlg::OnInitDialog()中添加如下代码:
//设置第三列状态
for ( i=1;i&5;i++)
&&&&& m_GridCtrl-&SetCellCheck(i,2,i%2);
运行,效果图所下:
大概思路和设置CheckBox列差不多。先在CMyGridCtrl::SetCellCombo(int nRow, int nCol, CStringArray &items)中做了封装。代码如下:
//设置单元格类型
this-&SetCellType(nRow,nCol,RUNTIME_CLASS(CGridCellCombo));
CGridCellBase* pCell=this-&GetCell(nRow,nCol);
if(pCell!=NULL&&pCell-&IsKindOf(RUNTIME_CLASS(CGridCellCombo&&&&&&& )))
&&&&&& ((CGridCellCombo*)pCell)-&SetOptions(items);//设置选择列表的值
&&&&&& if (items.GetSize()&0)
((CGridCellCombo*)pCell)-&SetText(items.GetAt(0));//设置单元格的当前值
然后在CGridCtrlTestDlg::OnInitDialog()中添加如下代码:
//设置第五列内容
list.Add(&a&);
list.Add(&b&);
for ( i=1;i&5;i++)
m_GridCtrl-&SetCellCombo(i,4,list);
运行,效果如下图所示:
设置行背景,其原理就是设置某一行的所有单元格的背景。
设置列背景,其原理就是设置某一列的所有单元格的背景。
这两个操作,已经被封装到了CMyGridCtrl类的以下函数中:
&&&&& void SetColumnColor(int nCol, COLORREF clr);//设置某一列的背景颜色
void SetRowColor(int nRow, COLORREF& clr);//设置某一行的背景颜色
细节这里就不说明了,运行后效果图如下所示:
若想针对CGridCtrl添加消息处理,只需要在父窗口中通过ON_NOTIFY添加消息映射,并实现响应函数即可。
本实例中,在CGridCtrlTestDlg中添加了两个消息映射:
ON_NOTIFY(GVN_SELCHANGED, IDC_GRID, OnSelChanged)
ON_NOTIFY(NM_DBLCLK, IDC_GRID, OnDBClick)
第一个参数是消息ID;
第二个参数是指控件ID,即在m_GridCtrl-&Create()的参数中所设定的控件ID。详见本文章节2.3.1。
第三个参数是响应函数名。
这里仅展示OnDBClick的实现代码:
void CGridCtrlTestDlg::OnDBClick(NMHDR* pNMHDR, LRESULT* pResult)
&&&&& NM_GRIDVIEW* pItem = (NM_GRIDVIEW*) pNMHDR;
&&&&& s.Format(&双击事件& [鼠标位置:第%d行 第%d列]&,pItem-&iRow+1,pItem-&iColumn+1);
&&&&& m_Msg=s;//m_Msg为界面上消息显示控件的映射变量
&&&&& UpdateData(FALSE);
运行,效果如下图所示:
注:最近有不少朋友通过回复或站内发信的方式,
&&&& 找我要gridctrl的源码和学习心得,我一个一个的挨着发,实在费力.
&&& 特把源码和文档上传到CSDN,请需要的朋友直接到相应地址去下载
两份学习心得都是一样的.只是用两个账号发的
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:156538次
积分:1986
积分:1986
排名:第18950名
原创:30篇
转载:41篇
评论:73条
(1)(2)(1)(1)(1)(1)(3)(1)(6)(3)(1)(11)(16)(17)(1)(6)

我要回帖

更多关于 宁县人民政府网 的文章

 

随机推荐