[续] 旷世难题(实现Dbgrid第一列为序号的方法 )(5分)

  • 主题发起人 主题发起人 青云
  • 开始时间 开始时间
我是楼主,最近一直忙于项目,我搞得GbGridEh一直是基于3.4版的。
有空我把自己修改的部分搞到4.0版上去。
还是希望大家共同完善。

经客户提醒,我发现,DBGridEh有了处理不好的地方,
就是右侧的滚动条不能很顺畅的随着鼠标的点击而滚动,明明想滚动一点点,
它却滚动到了最下面或最上面;
于是我直接用DbGrid测试了一下,却发现DBGrid的右侧滚动条很正常。

不知道有什么改善方法?客户用起来感觉很别扭;
 
TO:楼主及kinneng
如果重写一个类似的控件,需要花费的精力有多大?
所需要的技术要求多高呢?
 
请问青云提供的是3.6还是4.0的改良版本?

我已经安装4.0了,不知道你说的问题在4.0版本是否已经修正了!
 
请问青云:能否设置,让系统不保存dbgrideh的列宽信息,不生成INI文件?
 
我是楼主,现在已经改造了4.0版本,
改造好后,遇到一些麻烦,
新版本中用到了内存表控件 MemTableEh ,
这个控件看上去很不错,过滤得时候可以下拉出该列中所有不重复的信息;
但是有两个非常致命的缺陷:
1、速度太慢,几乎不能忍受,大家测试的时候也许只有几百条数据,也许没有留意这个问题,我测试的时候都是几千条到几万条;这些数据如果用AdoQuery直接关联,那么很快就会连接上,如果 MemTableEh ,没有个半分钟左右的时间出不来,有这个时间,你可以抽半根烟了;所以这个看似不错的功能其实多少实用价值;

2、如果对dbGridEh进行排序,那么以前我们一般用 AdoQuery.Sort:='...';
现在只能用MemTableEh.SortOrder:='...';
这个速度也很慢,而且有个致命的错误,如果DbGridEh里的字段位置调一下,排序就不准了。


所以我已经改造了这个ehlib4.0,从它提供的Demo看,感觉不错,但是感觉不够成熟;

也许是我实用的方法不是很正确,希望大家讨论讨论4.0的实用感受
 
TO:楼主
谢谢!你改造好的Ehlib4.0版可以在哪下载呢?
 
我最新改造的ehlib4.0
http://www.daizhicun.com/dmx/dai/ehlib_qingyun.rar

希望对大家有用

功能简介:
新改造的ehlib的强悍功能展示:



在保持以前ehlib功能的基础上作了以下拓展:



1、 自动记忆字段顺序;

客户有可能对列表中的各个字段顺序不满意,虽然我们精心设计出我们认为的最好的顺序(这个“精心设计”有时候也要费我们不少时间),但是不同的操作员会有不同的看法,作为我们开发人员,最好的方法是懒得操这份心,让他们自己调整各个字段的顺序;

最新改造的控件已经支持该功能,窗体关闭后,Grid各个字段的顺序会被记忆;下次启动就会自动导入该顺序;
注意,需要运行 DBGridEh1.Columns.AddAllColumns(True);



2、能够设置字段的颜色;

随着wms的设计越来越复杂 ,很多表动则40到50个字段, 这么多字段看起来非常吃力,而且当中可能只有几个是客户最关心的,可以让用户自己给这些字段换个颜色; 这样,我不也懒得管那些需要加着重色的字段;









3、能够设置字段的Foot值;

数据表中几乎所有地方都要用到统计,比如数量统计,价格统计,体积统计…

而且统计类型常见的也有 求和 ,求平均值等等;

以前需要开发人员写死在程序里,现在不需要了,让用户自己随心所欲爱怎么弄就怎么弄吧;我们也省得操那么份心;





4、支持多个字段的任意关系的排序;

以前的Grid只支持一个字段的正排序或者反排序或者不排序;

现在强了,随心所欲,多个字段随便怎么排都可以;它会自动记住那个是第一个排序条件,那个是第二个排序条件..





5、增加了拷贝功能;

选中多条记录或一条记录,或者选中某几列或一列;按Ctrl+C,或者点右键“拷贝”按钮;

这样就会把这些信息记录到粘贴板里;我们可以打开一个Excel,点Ctlr+V,就会原样粘贴到Excel,如果我们打开一个access,只要表结构一样,也可以原样粘贴到Access;实现和office的无缝连接;



6、导出功能

支持txt,cvs,rtf ,xls 这四种格式,如果不选中Grid,那么就到处全部,如果选中,那么就导出选中的部分;
 
to 青云:如果有范例demo就更能表现你的6大突出功能了!
 
呵呵,楼主的共享精神实在令人佩服!
我已经下载了!
 
楼主,在D2006中无法安装哦!
 
我不知道为什么有人会晕,不认为是一个难题,我试过不少,在insert或update时会出错,那些会晕的人可能只要简单显示一下就行了
 
不会了,青云改的这个新版,我刚才急冲冲地测试了一下,在Insert跟Append下的行号,现在显示得非常完美了!
具体如何,还是请各位自行试试吧!

PS:我已经在D2006下面安装成功了!可是不知道如何上传附件,不然可以传上来供各位一用!
 
to FormatBrain
不要试了一下就当回事,要模拟各种环境下,充分测试,否则交货之后,你的客户发现
问题,你没面子事小,要你改正它,你又不会,很可能连钱也收不到,到目前为止我还
没有见到一个完美显示序号的DBGrid类表格.
 
我是楼主, 又发现了一个大bug,唉。
看看这幅图:
http://www.daizhicun.com/dmx/pic/ehlibgrerror.JPG
我是通过MemTableEh作为数据集的,
图上,我明明过滤的条件是“车辆体积”等于4.47,
结果它不但没有把有4.47的这条纪录过滤出来,却把“车辆体积”等于4这样的条件过滤出来了。

说白了,这个玩意只能过滤整数条件,如果遇到浮点数,它就犯晕。
郁闷,为什么这么多问题呢?
 
支持 楼主..
控件越来越强.....
我想单独 作 自动记忆字段顺序 和 隐藏列
楼主 可否把 1、 自动记忆字段顺序;2: 隐藏列 的代码 贴出...谢谢 :)
 
楼上的朋友,我改写的ehlib完全支持你说的功能.

使用的时候,要加:
DbGridEh1.Columns.addAllcolums(true);
 
to 青云
您好!
1. 4.0的控件在查询时能否象3.4那样模糊查询?
2. 右键菜单,出现很多其它Grid的操作,不简洁,能否去掉?
3. 右键菜单中的复制、粘贴功能为何总是失效的?
4. 生成的临时文件能否设定路径?
谢谢!
 
因为过滤的是字符串,
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部