有关网格(Grid)控件的一些想法
2010-04-03 09:49
776 查看
实际应用中经常和表格打交道,尤其是数据库项目开发中。在VB6中,使用过VSFlexGrid,那绝对是一个好东西,数据方面:支持数据库绑定和虚模式;外观上:支持行列隐藏、滚动条隐藏、行列冻结、合并单元格等。
现在有个想法,就是能否有一个实现报表式的控件,并能支持虚模式及绑定数据库,这里所谓的报表式,是指网格控件不是单一的二维数据表可视化,而是有一些报表功能,如有表头和表足(或者叫顶部固定行、底部固定行,可多行,能单元格合并),表头(或列头)、表足往往蕴含丰富信息,如分组列头,表足显示单元格汇聚信息等。
一、在VB6下考虑过用几个网格合并做一个自定义的控件,似乎可以,但外观上有些别扭。因MS把VB甩在半路上,只好转到MFC。
二、在MFC下,修改Chris Maunder MFC Grid control 似乎也可以,但工作量很大,目前实现了表头、表足,单元格合并(参考Huang Wei代码),行列冻结,改进GridCellCheck和GridCellCombo单元格类型。表头表足工作在实模式下,另建立其对应的后台单元格对象数组做维护。但在数据绑定虚模式下遇到问题,没能做下去。
三、修改BCG的BCGPGridCtrl1200,重点是表头表足部分。
修正了几个小Bug(本想向BCG报告,但英文差,怕表达不清):
1、当设置了表头或表足,并显示行头时,滚动窗口行头重绘错乱,垂直滚动条与表足交叉部闪烁。
......
pGrid->EnableRowHeader (TRUE);
pGrid->EnableLineNumbers ();
// 测试表头足高
pGrid->SetGridHeaderHeight(20);
pGrid->SetGridFooterHeight(40);
......
(解决方法:修改CBCGPGridCtrl::OnGetRowHeaderRect() 及 CBCGPGridCtrl::OnDraw())
2、当设置了冻结列,并设置调整列宽时不显示内容,在调整冻结列下一列的列宽时,该列内容被冻结列遮盖
// 冻结第2列
pGrid->FreezeColumns (2, FALSE);
// 拖动列宽调节时,不显示内容
pGrid->SetShowDragContext(FALSE);
(解决方法:修改CBCGPGridCtrl::OnLButtonUp())
3、调整表头布局。将自定义表头部分调到列头上方。
。。。(待续)
现在有个想法,就是能否有一个实现报表式的控件,并能支持虚模式及绑定数据库,这里所谓的报表式,是指网格控件不是单一的二维数据表可视化,而是有一些报表功能,如有表头和表足(或者叫顶部固定行、底部固定行,可多行,能单元格合并),表头(或列头)、表足往往蕴含丰富信息,如分组列头,表足显示单元格汇聚信息等。
一、在VB6下考虑过用几个网格合并做一个自定义的控件,似乎可以,但外观上有些别扭。因MS把VB甩在半路上,只好转到MFC。
二、在MFC下,修改Chris Maunder MFC Grid control 似乎也可以,但工作量很大,目前实现了表头、表足,单元格合并(参考Huang Wei代码),行列冻结,改进GridCellCheck和GridCellCombo单元格类型。表头表足工作在实模式下,另建立其对应的后台单元格对象数组做维护。但在数据绑定虚模式下遇到问题,没能做下去。
三、修改BCG的BCGPGridCtrl1200,重点是表头表足部分。
修正了几个小Bug(本想向BCG报告,但英文差,怕表达不清):
1、当设置了表头或表足,并显示行头时,滚动窗口行头重绘错乱,垂直滚动条与表足交叉部闪烁。
......
pGrid->EnableRowHeader (TRUE);
pGrid->EnableLineNumbers ();
// 测试表头足高
pGrid->SetGridHeaderHeight(20);
pGrid->SetGridFooterHeight(40);
......
(解决方法:修改CBCGPGridCtrl::OnGetRowHeaderRect() 及 CBCGPGridCtrl::OnDraw())
2、当设置了冻结列,并设置调整列宽时不显示内容,在调整冻结列下一列的列宽时,该列内容被冻结列遮盖
// 冻结第2列
pGrid->FreezeColumns (2, FALSE);
// 拖动列宽调节时,不显示内容
pGrid->SetShowDragContext(FALSE);
(解决方法:修改CBCGPGridCtrl::OnLButtonUp())
3、调整表头布局。将自定义表头部分调到列头上方。
。。。(待续)
相关文章推荐
- [技术分享 - TMG 篇] 20111101,如何更新 TMG 队列中节点——有关 NLB 网络负载均衡的一些想法
- 有关一些swift 控件的基本创建和使用
- 关于jquery动态增减控件的一些想法和小插件
- 有关快速开发平台的一些想法!
- 有关C++类中数据成员变量定义的一些想法
- 有关Android控件以及一些布局的设计
- 有关web开发的一些想法
- 微信开发过程中有关资金安全的一些想法
- 如何将数据源绑定在essential grid for JavaScript网格控件上
- 有关 flash和苹果,微软大战的一些想法。
- 有关读书求知的一些想法[转]
- 关于asp.net服务器控件的一些想法
- 有关PR消失谣传的一些想法
- HTML5 UI框架Kendo UI Web中如何实现Grid网格控件本地化
- 有关数字出版的一些想法
- Gridview控件有关的一些设置
- 关于jquery动态增减控件的一些想法和小插件
- Grid 网格布局控件
- HTML5 Web app开发工具Kendo UI Web中Grid网格控件的使用
- 有关读书求知的一些想法