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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi DBgridEh多行单元格如何实现~急!!相关的知识,希望对你有一定的参考价值。

有需求需要实现类似金蝶凭证的表格效果(如红框显示):

我现在用的grid控件是dbgridEh,有什么办法可以实现上面的效果,尽量不使用其他的第三方控件的前提下?
分暂时这么多,如果有哪位大大能够帮忙想出可行办法再另外加分,谢谢.

是呀,重换控件是个很痛苦的事情。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单元格的高度或宽度。
愿你成功。
参考技术A dbgridEh不是第三方控件吗?想要实现还是借助第三方控件比较好实现,我目前使用的是TMS套件的advStringGrid,有点类似于delphi自带的stringgrid,通过这个可以轻松实现你要的效果!
advStringGrid1.MergeCells(0,0,2,1);//一句代码实现合并单元格追问

问题是原先基于dbgridEh写的功能太多,换控件代价太大呀,大大!

追答

用DBGridEh是不能合并单元格的,你自己重写这个控件估计也很难实现的,要不就找个折中的方案,你还用DBGridEh做数据处理,然后显示的时候用AdvstringGrid来显示!就是操作DBgrid数据后,把DBGrid的数据读取下来,然后再更新到AdvStringGrid。

参考技术B Eh做不了这个的,有专门的凭证表格的 参考技术C 依稀记得是 币别||单位
这样来实现的追问

我不是问多表头哦.是多行单元格.

如何将多行单元格数据转变成一行?这个Excel技巧你一定不知道!

在Excel表格中,怎样快速的将多行数据转变成一行?其实有三种非常简单的方法,下面我来给大家分享一下,希望能够帮助大家!
技术分享图片
如何将多行单元格数据转变成一行?这个Excel技巧你一定不知道!
方法一:利用函数公式

首先输入辅助列"、",然后在单元格中输入函数"=PHONETIC",选中单元格数据即可。

具体操作如下:
技术分享图片
如何将多行单元格数据转变成一行?这个Excel技巧你一定不知道!
方法二:利用F9运算符

在单元格中输入"=",选中单元格数据,在编辑状态下按"F9"键,删除数据的头尾的符号。按快捷键"Ctrl+H"弹出查找和替换框,符号替换为"、"即可。

具体操作如下:
技术分享图片
如何将多行单元格数据转变成一行?这个Excel技巧你一定不知道!
方法三:利用剪切板

选中单元格数据进行复制,打开剪切板,将数据粘贴到另一个单元格中,按快捷键"Ctrl+H"弹出查找替换框,按"Ctrl+J"将查找内容更换为"换行符"即可。

具体操作如下:
技术分享图片
如何将多行单元格数据转变成一行?这个Excel技巧你一定不知道!
以上就是今天分享的Excel技巧了。怎么样大家有没有学会呢?

以上是关于delphi DBgridEh多行单元格如何实现~急!!的主要内容,如果未能解决你的问题,请参考以下文章

delphi中如何设置DBGridEH第一列为下拉列,并使其控制表格筛选

你好,请教个问题,就是delphi中DBGridEh的统计行数据如何实现的

在delphi中如何实现cxGrid控件一个单元格显示多个操作按钮

DbGridEh 一个单元格的值改变时另一单元格的值随之改变

delphi DBGridEh的checkbox怎么实现勾选即代表选中这一行

delphi 在DbGridEh中显示TreeView 效果