delphi DBgridEh多行单元格如何实现~急!!
有需求需要实现类似金蝶凭证的表格效果(如红框显示):我现在用的grid控件是dbgridEh,有什么办法可以实现上面的效果,尽量不使用其他的第三方控件的前提下?分暂时这么...
有需求需要实现类似金蝶凭证的表格效果(如红框显示):
我现在用的grid控件是dbgridEh,有什么办法可以实现上面的效果,尽量不使用其他的第三方控件的前提下?
分暂时这么多,如果有哪位大大能够帮忙想出可行办法再另外加分,谢谢. 展开
我现在用的grid控件是dbgridEh,有什么办法可以实现上面的效果,尽量不使用其他的第三方控件的前提下?
分暂时这么多,如果有哪位大大能够帮忙想出可行办法再另外加分,谢谢. 展开
4个回答
展开全部
是呀,重换控件是个很痛苦的事情。DBGrid或DBGridEh都可以实现的,只是处理起来费一点儿事而已,过去曾绞尽脑汁做过类似的。方法是利用DBGrid的DBGrid1DrawColumnCell事件重画相关的单元格线,用白色。举个例子,不显示第二列的每行的格线:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.Index=1) then
begin
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with (Sender as TDBGrid).Canvas do //画 cell 的边框
begin
Pen.Color := clwhite; //定义画笔颜色(白色)
MoveTo(Rect.Left, Rect.Bottom);//画笔定位
LineTo(Rect.Right, Rect.Bottom);//画白色的横线,合并行的效果
//MoveTo(Rect.Right, Rect.Top);//画笔定位
//LineTo(Rect.Right, Rect.Bottom);//画白色的竖线,合并列的效果
end;
end;
end;
你加上对Rows的判断就可以按区域拆分网格线了,当然这不是真正意义的单元格合并,最好结合StringGrid控件做,StringGrid在前台,DBGrid在后台,填写数据时你还必须加上判断,哪行添,哪行不添,确实不省事,但也是不得已的办法,不可能找到第二条路的,只能这么做。
如果想实现上图的效果你还必须用代码灵活设置Grid单元格的高度或宽度。
愿你成功。
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.Index=1) then
begin
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with (Sender as TDBGrid).Canvas do //画 cell 的边框
begin
Pen.Color := clwhite; //定义画笔颜色(白色)
MoveTo(Rect.Left, Rect.Bottom);//画笔定位
LineTo(Rect.Right, Rect.Bottom);//画白色的横线,合并行的效果
//MoveTo(Rect.Right, Rect.Top);//画笔定位
//LineTo(Rect.Right, Rect.Bottom);//画白色的竖线,合并列的效果
end;
end;
end;
你加上对Rows的判断就可以按区域拆分网格线了,当然这不是真正意义的单元格合并,最好结合StringGrid控件做,StringGrid在前台,DBGrid在后台,填写数据时你还必须加上判断,哪行添,哪行不添,确实不省事,但也是不得已的办法,不可能找到第二条路的,只能这么做。
如果想实现上图的效果你还必须用代码灵活设置Grid单元格的高度或宽度。
愿你成功。
展开全部
dbgridEh不是第三方控件吗?想要实现还是借助第三方控件比较好实现,我目前使用的是TMS套件的advStringGrid,有点类似于delphi自带的stringgrid,通过这个可以轻松实现你要的效果!
advStringGrid1.MergeCells(0,0,2,1);//一句代码实现合并单元格
advStringGrid1.MergeCells(0,0,2,1);//一句代码实现合并单元格
追问
问题是原先基于dbgridEh写的功能太多,换控件代价太大呀,大大!
追答
用DBGridEh是不能合并单元格的,你自己重写这个控件估计也很难实现的,要不就找个折中的方案,你还用DBGridEh做数据处理,然后显示的时候用AdvstringGrid来显示!就是操作DBgrid数据后,把DBGrid的数据读取下来,然后再更新到AdvStringGrid。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Eh做不了这个的,有专门的凭证表格的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
依稀记得是 币别||单位
这样来实现的
这样来实现的
追问
我不是问多表头哦.是多行单元格.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询