一个老问题,不过有新思路《把Dbgrid中根据条件改变颜色得行放在一起?》(30分)

  • 主题发起人 主题发起人 菜根
  • 开始时间 开始时间

菜根

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个想法,以前大家也讨论过,把Dbgrid中根据条件,是某些行颜色改变,我有个想法
就是把,改变颜色得行,放到一起显示,而不是,这里显示一行,那里显示一行,以便以后
打印输出方便,一般是放到Dbgrid得前几行,后边根据显示不满足条件得行,大家说怎么做
方便一些,我有个笨方法,就是通过一个中间数据集实现,不过我想那样代码量会很大,大家
帮忙想想别的方法》谢谢!
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
在这里写代码
end;
 
先用SQL语句对各种条件的数据进行分类显示就可,或直接根据条件排序
 
思路不能再新一点吗?
比如, 用stringgrid代替dbgrid...
实现起来要简单得多
 
to 完颜康:我也是在这里写代码得,但是,不能将变色得行移到一起,请指教!谢谢!
to lcl800, 你的方法,不错,但是,你说对数据分类显示,我觉得不可能把数据显示在
一个DBGRID中吧?是吧?
to Pearl., Stringgrid功能太单一,想对数据库进行的插入删除等操作无法实现,!
 
那要看你要求的是什么了。 如果你要求的是关于grid显示方面的, 这个当然stringgrid比dbgrid强。
stringgrid功能单一才要用它呀, 它的功能都是关于grid操作的, 有关数据库操作的部分当然可以在stringgrid的事件里自己处理(代码也不复杂)。
而dbgrid则是个四不象,grid操作功能不强, 数据库操作功能也差劲。
 
to pearl:你好,给个DEMO,或是写两行代码?
 
是不是分数太低了,大家不肯帮忙呀,下次补给你,先帮一下小弟?
 
最多给你个思路, 具体写代码太麻烦啦
用个array或者list纪录原始顺序。 然后随便你怎么排序。 更新、删除时就能找到原始对应的数据库记录了。
 
灵活点:
你不能在SQL中实现分组,然后再在OnDrawColumnCell代码实现吗
也就是说,在SQL中先实现分组,如下
select * from 你的表 where 你的第一个分组的条件
union all
select * from 你的表 where 你的第二个分组的条件
...
union all
select * from 你的表 where 你的第n个分组的条件
 
还是用stringgrid来控制好!能随意控制
 
多人接受答案了。
 

Similar threads

后退
顶部