以前有人提过的问题,一直没人解答,如何在grid里实现如下的结果??? ( 积分: 100 )

  • 主题发起人 主题发起人 渡鸦
  • 开始时间 开始时间

渡鸦

Unregistered / Unconfirmed
GUEST, unregistred user!
客户分类 客户名称 客户地址
---------------------------------
杭州客户 客户1 地址1
客户2 地址2
客户3 地址3
上海客户 客户1 地址1
客户2 地址2
客户3 地址3
 
什么Grid,是StringGrid吗? 自画呀。
 
也可以先把這樣形式的紀錄先放到表裏,然後用DBGrid或stringgrid顯示
 
用DV三方控件吧
 
用STRINGGRID,这样可以在脱机情况下显示数据库的内容,而DBGRID是数据敏感控件,必须是数据库联机的。而且STRINGGRID应用起来灵活,无非就是多加几行代码。
 
像这个问题其实就是一个树的问题,”杭州客户“,”上海客户“等相当于父节点,
用树控件比较简单,可以用dev的cxtreelist等控件是很简单的。如要用dbgrid这种普通的控件,可以这么做:
adoquery.sql.text:= 'select * from table order by 客户分类';
然后在adoquery的ongetText事件中去写代码
procedure TForm1.ADOQuery1classGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
...
end;
 
可以用第三方控件,不建临时表...
 
如果能用三方控件那就太简单了,就是一个很简单的树结构吗
cxtreelist 轻松搞定你的问题
 
不要作tree,要是grid,最好能打印的
 
cxtreelist兼有grid和tree的功能,
要不然就在获取数据后,在客户端StringGrid中自己赋值进去。
 
cxtreelist强的一塌胡涂,既能表示tree的形式,而且比treeview刁的不得了,又能表示成
grid的形式,而且比dbgrid,stringgrid刁的不得了;
真是不用不知道,一用忘不掉,哈哈
 
给你介绍个新工具,你用cxdbgrid吧,你这样的要求在这个控件里很简单的就可以实现!
你可以查找devExpress
我们公司一直在用这些控件,功能很强的
若你下载到这些控件不会用,可以找我
 
用DBGRIDEH可以解决这个问题。
在ONDRAW时,重绘表格就行了。
不过要有标识字段,如
分类 名称 地址 标识
杭州客户 客户1 地址1 1
客户2 地址2 2
客户3 地址3 3
在DRAW时,标识不为1的(不是首个),将[分类]列做Font.Color=DBGridEh.color。
这样,首分类就能看到,其它一样的就不显示。
这种方法,本人在做财务程序的时候正好用上。
2007年
月 日 借方 贷方
3 1 999.00 0.00
(3 1) 0.00 999.00
下面同样是3月1日的就将COLOR设置掉,看上去就一目了然了。
 
用普通DBGRID也可实现:
1.定义一变量nowClass,初始值为空
2.相应查询中必须加order by 分类 取出数据
3.在DBGrid1DrawColumnCell中加代码:
if (column.fieldname="分类") then
begin
if (nowClass<>Grid1.dataset.fieldbyname('分类').asstring ) then
begin
Dbgrid1.Canvas.Brush.Color :=clyellow;
Dbgrid1.Canvas.FillRect(rect);
Dbgrid1. Canvas.font.color := clblack;
end
else
begin
Dbgrid1.Canvas.Brush.Color :=clwhite;
Dbgrid1.Canvas.FillRect(rect);
Dbgrid1. Canvas.font.color := clwhite;
end;
Nowclass:=DBGrid1.dataset.fieldbyname('分类').asstring;
end
else
begin
Dbgrid1..Canvas.Brush.Color :=clwhite;
Dbgrid1.Canvas.FillRect(rect);
Dbgrid1..Canvas.font.color := clblack;
end
Dbgrid1.DefaultDrawcolumnCell(rect,datacol,column,state);
 
打印如果是用ReportBuilder倒是很容易實現的,里面有个属性SuppressRepeatedValues,查詢顯示的就不是很清楚,如果是查詢出來把它填到stringrid中的話倒是不難做得到
 
hellohha的方法比较的接近我要的效果就是重绘grid数据大的时候挺慢的,谢谢!
 
后退
顶部