delphi DBgridEh多行单元格如何实现~急!!

有需求需要实现类似金蝶凭证的表格效果(如红框显示):我现在用的grid控件是dbgridEh,有什么办法可以实现上面的效果,尽量不使用其他的第三方控件的前提下?分暂时这么... 有需求需要实现类似金蝶凭证的表格效果(如红框显示):

我现在用的grid控件是dbgridEh,有什么办法可以实现上面的效果,尽量不使用其他的第三方控件的前提下?
分暂时这么多,如果有哪位大大能够帮忙想出可行办法再另外加分,谢谢.
展开
 我来答
波光视野
2013-09-11 · TA获得超过417个赞
知道小有建树答主
回答量:331
采纳率:81%
帮助的人:178万
展开全部
是呀,重换控件是个很痛苦的事情。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单元格的高度或宽度。
愿你成功。
xtfnpgy
2013-09-10 · TA获得超过1784个赞
知道大有可为答主
回答量:1989
采纳率:76%
帮助的人:1096万
展开全部
dbgridEh不是第三方控件吗?想要实现还是借助第三方控件比较好实现,我目前使用的是TMS套件的advStringGrid,有点类似于delphi自带的stringgrid,通过这个可以轻松实现你要的效果!
advStringGrid1.MergeCells(0,0,2,1);//一句代码实现合并单元格
追问
问题是原先基于dbgridEh写的功能太多,换控件代价太大呀,大大!
追答
用DBGridEh是不能合并单元格的,你自己重写这个控件估计也很难实现的,要不就找个折中的方案,你还用DBGridEh做数据处理,然后显示的时候用AdvstringGrid来显示!就是操作DBgrid数据后,把DBGrid的数据读取下来,然后再更新到AdvStringGrid。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龙胖胖纸
2013-09-10 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:54.2万
展开全部
Eh做不了这个的,有专门的凭证表格的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
下扬州啊
2013-09-10 · TA获得超过2519个赞
知道大有可为答主
回答量:4870
采纳率:40%
帮助的人:2114万
展开全部
依稀记得是 币别||单位
这样来实现的
追问
我不是问多表头哦.是多行单元格.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式