cgridctrl帮助中文版1

上传人:第*** 文档编号:33475375 上传时间:2018-02-15 格式:DOC 页数:17 大小:94KB
返回 下载 相关 举报
cgridctrl帮助中文版1_第1页
第1页 / 共17页
cgridctrl帮助中文版1_第2页
第2页 / 共17页
cgridctrl帮助中文版1_第3页
第3页 / 共17页
cgridctrl帮助中文版1_第4页
第4页 / 共17页
cgridctrl帮助中文版1_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《cgridctrl帮助中文版1》由会员分享,可在线阅读,更多相关《cgridctrl帮助中文版1(17页珍藏版)》请在金锄头文库上搜索。

1、转载CGridCtrl 帮助中文版(1)2009 年 11 月 29 日 星期日 12:25GridCtrl 学习指南当我努力为显示和编辑现有表中的数据而使用 CListCtrl 到了极限之后,我意识到我所需要的只不过是一个专用的 Grid 控件而已。于是我开始着手写自己的 Grid 控件,但为了节省时间我决定修改 Joe Willcoxsons 的免费控件 WorldCom,你可以在以下站点 http:/ 找到这个东东。为了让它能做我要做的事情,我分解了他的代码,并且重新修改。由于代码经过太多的修改,我甚至不能确信最终是否还存在最初的代码。但无论如何,Joe 的代码是一个大框架,而我只是在上

2、面进行加工而已。工程一开始的时候是计划尽可能的简单但是当我不断发现我不得不考虑新特色的时候,它迅速的膨胀成为一个梦魇。虽然测试并不是没有遗漏-但是我还是坚信情形不会变得太坏 J。Joe 很善意的允许我开放这个资源而不附加任何的语句(毕竟那是基于他的代码),但是由于工程象马拉松似的,所以我在这段代码中使用了两个非常不成熟的条件:这段代码可以以任何方式用于已编译的形式中(包括商业用途)。只要代码不适用,即使没有作者同意,作者姓名和所有版权信息都原封不动,你可以对代码进行任何形式的使用。但是,如果没有作者的同意,这篇文章和附带的源代码都不能放在任何网站或论坛上。你就把它当作是没有任何担保的软件,随意

3、使用吧!我已经尽量除去任何不良的 特征,对由它引起的任何损害,时间的浪费或者数据丢失等,我不负任何责任。希望不要问太多关于继续开发下去的到底有多大工作量的问题。如果你真的要用于商业场合,请给我发 email 让我知道。如果没有多少人使用的话,开放和维护/升级代码就没有任何意义。控件的特点:使用鼠标可以进行单元格的选择,还可以辅助 ctrl 和 shift 的组合键进行选择。也可以取消选择。 行和列可以按照大小进行重排,还可以取消对行、列或两者的排序。 双击区分点,行或者列可以按照大小自动排序 可以对任何列或行固定 单元格可以有不同文本和背景颜色的个性化设置 单元格可以有字体的个性化设置 单元格

4、可以标注只读或者其他的状态设置及检测 OLE 的拖放动作 Ctrl-C, Ctrl-X 和 Ctrl-V 执行拷贝、剪切、粘贴操作,Ctrl-A 全选 当单元格成为焦点,并且在单元格的编辑区域按下字符键,就意味着在那个单元格进行编辑了 支持微软的智能鼠标 可以在单元格中加入图片 对大型数据可以使用虚拟模式 充分的打印支持,支持文档/浏览环境(包括打印预览)或是基于会话的应用(不支持打印预览) 可选的列表模式,包括对行的全选或单选,还有单击列标题提示进行插入的操作。 众多的虚函数可以很容易对控件进行功能扩充 支持 UNICODE 支持 WinCE 单元格的标题提示太小不能显示数据 可以隐藏行和列

5、 在 VC4.2、5.0、6.0 和 CE 工具箱 2.0、3.0 下编译通过示例中示范了 grid 控件中大部分特征文档如果想在你的工程中使用这个 Grid 控件的话,你还得在你的工程中添加一些文件:gridctrl.cpp, gridctrl.h Grid 控件资源文件和头文件gridcellbase.cpp, gridcellbase.h 单元格的基础类gridcell.cpp, gridcell.h 单元格的默认执行文件CellRange.h CcellID 和 CcellRange 类的定义MemDC.h Keith Rules 的直接存储类InPlaceEdit.cpp, InPl

6、aceEdit.h 定位编辑窗口的源文件和头文件GridDropTarget.cpp, GridDropTarget.h Grid 容器的 drag 和 drop 对象 只有在 gridctrl.h 中没有定义 GRIDCONTROL_NO_DRAGDROP 的时候才有必要使用。Titletip.cpp, Titletip.h 从 Zafir Anjum 那里的到的单元格标题提示. 只有在 gridctrl.h 中没有定义 GRIDCONTROL_NO_TITLETIPS 的时候才有必要使用结构这个 Grid 是基于一种框架(CgridCtrl 工程),这种框架组织和控制那些容纳数据、执行某些

7、操作如画图、句柄方法如按钮的点击事件的单元格的动作。Grid 工程本身的句柄事件如点击是在单元格之前响应,如果它认为有必要的话,它还会发送某种鼠标信息。它还包含一个拖曳对象(CGridDropTarget)和一个标题提示对象(CTitleTip),前者处理拖曳操作,后者在单元格物理空间在最大限度内不足以显示其内容时可以显示出其内容。Grid 单元格可以是任何类型,其长度与源自 CgridBaseCell 的类的长度一样。包含这个包的是一个 CgridCell类,它能处理基本的数据存储和编辑操作。扩充的两个类 CgridCellCombo 和CGridURLCell 示范了如何创建自己的单元格类

8、。单元格有两种主要状态即固定和非固定。固定的单元格通常在 Grid 的左上方,并且不会随着 Grid 的卷动而移动。通常这些单元格包含列和行的标题部分,并且不能进行编辑。而非固定的单元格构成了 Grid 的内部,你可以对它进行编辑和选择。Grid 的各种不同属性的默认值存放在 CgridDefaultCell 中。每个 Grid 中通常有四种属性-每个 Grid 中含有非固定、列固定、行固定以及行列同时固定的单元格的默认值。因此,为了实现设置 Grid 的默认属性,首先得使用CGridCtrL:GetDefaultCell 来取得单元格的默认实现,然后你就可以直接设置了单元格的属性除字体属性外

9、都很明确。每一个单元格都有一个指向字体结构体的指针,这个指针只有当你的自行设置单元格的字体属性时才会被分配和使用。Grid 还有一种虚拟模式阻止 Grid 创建实际的格子,每当它需要单元格的信息时,允许你的指定一种回收函数或者消息机制来获得。这样当工作轻微减少时可以节省大量的内存费用。发送给 Grid 父类的消息 GVN_ODCACHEHINT 可以帮助你的在 Grid 的单元格发送信息请求时预先进行数据缓冲。Grid 的数据是以行为单位进行存储的,所以,对于大量单元格而言,所有的操作都必须以行为单位进行的。解说好了-那么,现在如何使用它呢?Grid 的基本类是源于 CWnd 的 CgridC

10、trl。为了使用它,你可以使用微软的VC+的对话框编辑器,把一个普通的控件放在对话框上,并且输入MFCGridCtrl(不包括引号)作为类名。Grid 的子类使用 DDX 机制(可以通过ClassWizard 来进行默认设置),使用 DDX_GridControl 函数代替DDX_Control(可以通过手动设置 ClassWizard 的输入来实现)。这些保证你的控件作为一个注册对象而不会产生一些莫名其妙的 WIN95 问题。你也可以选择使用 CGridCtrl:CreateCGridCtrl grid;grid.Create(rect, pParentWnd, nID);其中的 rect

11、是大小,pParentWnd 是父窗口,nID 是标志符。列和行的数目int GetRowCount() const 返回行(包括固定行)的数目int GetColumnCount() const 返回列(包括固定列)的数目int GetFixedRowCount() const 返回固定行的数目int GetFixedColumnCount() const 返回固定行的数目BOOL SetRowCount(int nRows) 设置行的数目(包括固定行),如果成功,返回 TRUEBOOL SetColumnCount(int nCols) 设置列的数目(包括固定列),如果成功,返回 TRUE

12、BOOL SetFixedRowCount(int nFixedRows = 1) 设置固定行的数目,如果成功,返回 TRUEBOOL SetFixedColumnCount(int nFixedCols = 1) 设置固定列的数目,如果成功,返回 TRUE大小和位置函数int GetRowHeight(int nRow) const 获取由 nRow 指定行的高度BOOL SetRowHeight(int row, int height) 设定由 row 指定行的高度为heightint GetColumnWidth(int nCol) const 获取由 nCol 指定列的宽度BOOL S

13、etColumnWidth(int col, int width) 设定由 col 指定列的宽度为widthint GetFixedRowHeight() const 获取固定行的高度int GetFixedColumnWidth() const 获取固定列的高度long GetVirtualHeight() const 获取所有行的合并高度long GetVirtualWidth() const 获取所有列的合并宽度BOOL GetCellOrigin(int nRow, int nCol, LPPOINT p) 取出单元格(nRow,nCol)的左上角点,成功返回 TRUE(单元格必须是可

14、见的)BOOL GetCellOrigin(const CCellID& cell, LPPOINT p) 获取给定单元格的左上角点,成功则返回 TRUE,也可以参照 CCellID.BOOL GetCellRect(int nRow, int nCol, LPRECT pRect) 获取给定单元格的边框,成功则返回 TRUE(单元格必须是可见的)BOOL GetCellRect(const CCellID& cell, LPRECT pRect) 获取给定单元格的边框成功则返回 TRUE(单元格必须是可见的) 也可以 参照 CCellID.BOOL GetTextRect(int nRow,

15、 int nCol, LPRECT pRect)t 获取给定单元格中的文本框,成功则返回 TRUE(单元格必须是可见的)BOOL GetTextRect(const CCellID& cell, LPRECT pRect) 获取给定单元格中的文本框,成功则返回 TRUE(单元格必须是可见的)也可以参照 CCellID.BOOL GetTextExtent(int nRow, int nCol, LPCTSTR str) 获取给定单元格中的指定的文本内容的边框,成功则返回 TRUEBOOL GetCellTextExtent(int nRow, int nCol) 获取给定单元格中的文本框,成功

16、则返回 TRUE虚拟模式虚拟模式允许 Grid 在不存储数据的情况下,能够显示大量数据。在虚拟模式下,不用产生单元格,也不用存储数据,列宽和行高除外。由于 Grid 本身并不存储数据,所以它必须有一些方法让其它程序帮助它存储这些数据。这些是通过 Grid 本身的回收函数或者其父类的一个句柄GVN_GETDISPINFO 的申明来实现的。void SetVirtualMode(BOOL bVirtual) 设置 Grid 是否使用虚拟模式BOOL GetVirtualMode() 当使用虚拟模式时返回 TRUEvoid SetCallbackFunc(GRIDCALLBACK pCallback, LPARAM lParam) 当Grid 为虚拟模式时,设置回调函数GRIDCALLBACK GetCallbackFunc() 当 Grid 为虚拟模式时,返回回调函数如果没有指定回调函数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号