这样的dbgrid显示怎么处理,有这样的控件吗???

aiq 2005-03-25 09:28:37
在查询显示的时候我要这样的效果,某一列如果 相连几行的记录值相同,则它们自己之间的网格线不显示,其他列不影响


-----------
| 1001 |
| |------
| |
------------------
| 1002 |
| |-------
-------------------
原来在PB里可以,不知道delphi中行不行?????
...全文
135 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
flamboyant 2005-03-26
  • 打赏
  • 举报
回复
如果需要更多列,自己对不同DataCol分别处理即可。
flamboyant 2005-03-26
  • 打赏
  • 举报
回复
做也不会太难的。如下:
先建立一个全局TAdoDataset,并且将adoquery1的内容克隆过去。
ADODataSet1.Clone(adoquery1,ltReadOnly);
然后写dbgrid的OnDrawColumnCell事件函数:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
privateValue:String;
begin
with TDBgrid(Sender) do
begin
if (DataCol=0) then //and (not DataSource.DataSet.Eof) and ( not DataSource.DataSet.Bof) then
begin
Canvas.Brush.Style := bsClear;
ADODataSet1.Locate('fieldname1;fieldname2',vararrayof([DataSource.DataSet.fieldbyname('fieldname1').AsString,DataSource.DataSet.fieldbyname('fieldname2').AsString]),[]);
ADODataSet1.Prior;
if adodataset1.Bof then
privateValue:=''
else
privateValue:=ADODataSet1.fieldbyname('fieldname1').AsString;
if (gdSelected in state) or (gdFocused in state) then
begin
Canvas.Brush.Color:=clNavy;
Canvas.Font.Color:=clWhite;
end
else
begin
Canvas.Brush.Color:=clWhite;
Canvas.Font.Color:=clBlack;
end;
if (column.Field.AsString=privateValue) then
begin
mRect:=rect;
canvas.FillRect(mRect);
end
else
begin
canvas.FillRect(Rect);
canvas.TextOut(rect.Left+2,rect.Top+2,column.field.AsString);
end;
end
else
begin
DefaultDrawColumnCell(rect,datacol,column,state);
end;
end;
end;
只需要在更改Adoquery的时候保持adodataset同步即可。
KevyLi 2005-03-25
  • 打赏
  • 举报
回复
我也想找, 帮忙顶一下
肥仔胧 2005-03-25
  • 打赏
  • 举报
回复
说容易啊
flamboyant 2005-03-25
  • 打赏
  • 举报
回复
自己在OnDrawColumnCell里画吧,无非就是检查某字段和上一条记录的字段值是否相同,相同则不画,不同就画呗。
肥仔胧 2005-03-25
  • 打赏
  • 举报
回复
非常关注这个问题
肥仔胧 2005-03-25
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3634/3634929.xml?temp=.9067041
http://community.csdn.net/Expert/topic/3634/3634989.xml?temp=.7271997
这个问题我也方表过,至今还没有解决,以上是我发表的?
caiso 2005-03-25
  • 打赏
  • 举报
回复
顶一下
yangyu9000 2005-03-25
  • 打赏
  • 举报
回复
好像 EhLib 3.6 可以办到 :)
psp2003 2005-03-25
  • 打赏
  • 举报
回复
UP
aiq 2005-03-25
  • 打赏
  • 举报
回复
没人啊

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧