I
iwillbestrong
Unregistered / Unconfirmed
GUEST, unregistred user!
看到芙蓉酒店管理系统里的表格实现了满格等多种合中国人习惯的功能就十分羡慕,但开发些管理系统的公司一直不放源代码出来(要是我,我一定会把我的代码公布出来,开源万岁),只能从各种迹象看出他们是在ehlib基础上加的功能,他们的功力真是深厚,能改得如此稳定。
我用过ehlib3.2中国式表格的组件(就是那个中国人改的),里面有满格显示,但设置了以后会出严重非常严重的错误(是在写数据时出措)。
小弟十分想要满格功能,于是自己动手改了起来(我平身第一次改组件,功力自然很浅,高手看了不要笑,要指点哈)。我只在TCustomDBGridEh.Paint中增加了部分代码。代码如下:
在TCustomDBGridEh.Paint的第九行(with drawinfo do后面)后面加:
with DrawInfo do
begin
//lmh add
if FFullGrid then
begin
tempcount:=(vert.GridExtent div vert.FixedBoundary)+1;
if vert.GridCellCount < tempcount then
begin
vert.FullVisBoundary:=tempcount*vert.FixedBoundary ;
vert.GridBoundary:=tempcount*vert.FixedBoundary ;
vert.GridCellCount:=tempcount;
vert.LastFullVisibleCell:=tempcount-1;
bkrect.Left:=0;
bkrect.Top:=0;
bkrect.Right:=horz.GridBoundary;
bkrect.Bottom:=vert.GridExtent;
tempcolor:=canvas.Brush.Color;
canvas.Brush.Color := Color;
Canvas.FillRect(bkrect);
canvas.Brush.Color := tempcolor;
end;
end;
这样在只显示数据的情况下能达到满格,并且很稳定。但只要设了footer等高级功能后就不能满格了,请高手指点一下,我改的是ehlib3.1版。谢谢了
还有一些功能也是想要的,比如选中单元的颜色,失去焦点的选中单元颜色的修改,表格线宽。
我用过ehlib3.2中国式表格的组件(就是那个中国人改的),里面有满格显示,但设置了以后会出严重非常严重的错误(是在写数据时出措)。
小弟十分想要满格功能,于是自己动手改了起来(我平身第一次改组件,功力自然很浅,高手看了不要笑,要指点哈)。我只在TCustomDBGridEh.Paint中增加了部分代码。代码如下:
在TCustomDBGridEh.Paint的第九行(with drawinfo do后面)后面加:
with DrawInfo do
begin
//lmh add
if FFullGrid then
begin
tempcount:=(vert.GridExtent div vert.FixedBoundary)+1;
if vert.GridCellCount < tempcount then
begin
vert.FullVisBoundary:=tempcount*vert.FixedBoundary ;
vert.GridBoundary:=tempcount*vert.FixedBoundary ;
vert.GridCellCount:=tempcount;
vert.LastFullVisibleCell:=tempcount-1;
bkrect.Left:=0;
bkrect.Top:=0;
bkrect.Right:=horz.GridBoundary;
bkrect.Bottom:=vert.GridExtent;
tempcolor:=canvas.Brush.Color;
canvas.Brush.Color := Color;
Canvas.FillRect(bkrect);
canvas.Brush.Color := tempcolor;
end;
end;
这样在只显示数据的情况下能达到满格,并且很稳定。但只要设了footer等高级功能后就不能满格了,请高手指点一下,我改的是ehlib3.1版。谢谢了
还有一些功能也是想要的,比如选中单元的颜色,失去焦点的选中单元颜色的修改,表格线宽。