Incompatible types:'TDBGridEh' and 'TDBGrid' 出现这个错误的解决方法

今天修改一个程序时出现以下错误提示:

 

[Error] Pastransact.pas(908): Incompatible types: 

 

'TDBGridEh' and 'TDBGrid'  出现这个错误的解决方法:

 

一、..是因为我在公共程序里定义了TDBGridEh表格的事件过程:

 

Procedure  OuttoExcel2(const 

 

sFileName:string;sDataSet:TDataSet;GridEh:TDBGridEh);

.....

.....

 

二、原因是,我在下面的TDBGrid表格程序里调用调用了上面TDBGridEh的过程事件,所

 

以就出现了上面的提示错误,改为对应的TDBGrid事件就解决了.

 

procedure TFrmtransact.BitBtn1Click(Sender: TObject);   //

begin

   if Sender=BitBtn1  then  OuttoExcel2

 

('excel0',Qryworkdate,DBGD);

 //  if Sender=BitBtn4  then  QuickRep2.Preview;

end;

.....

.....

 

 

三、

    引用网上"长尾兔的摆渡人生"大侠的另一种解决方法:

 

由DBGrid与DBGridEh的冲突,引发关于uses单元们的作用顺序的思

 

2007/10/16 下午 07:10

 

  相信许多Delphi编程者都用过或体验过TDBGridEh这个第三方控

 

件。我前几天编程时,也试着去用DBGridEh,却小小地吃了一个苦

 

头。在此无意诋毁TDBGridEh(EhLib)或DBGrid,它们都是很好用的

 

数据感知表格控件,只不过它们之间有冲突而已。

  事情经过是:

  我在编一个铁路物流货场管理程序时,用到了表格控件,最初

 

,我用了DBGrid,但DBGrid无法直接设置表格的行高,于是我删掉

 

DBGrid,改用DBGridEh。至此一切正常。后来我发现其实行高不必

 

控制,于是我又把DBGridEh删掉,换做DBGrid。至此仍然一切正常

 

  然后,问题来了。由于表格显示的数据记录需要区分来货和走

 

货,也就是说根据操作数量的正负,用不同的颜色显示每一条记录

 

。于是我在DBGrid的OnDrawColumnCell事件里写代码设置颜色,并

 

用DefaultDrawColumnCell方法重绘表格。代码写好后,运行......

 

奇怪!在DefaultDrawColumnCell那一行怎么提示“Incompatible 

 

types”错误?

  我脑袋开始晕了。应该不会是我设置和代码的问题啊!这个程

 

序很大,从头至尾编来,我几乎没有犯过任何错误的。无奈,旁观

 

者清,我求助于网友伴水清清。伴水说,是不是有哪个单元没有引

 

用啊?

  伴水一言提醒了我。乖乖,倒不是哪个单元没有引用,而是多

 

引用了DBGridEh的两个单元!(向窗体上拖放DBGridEh时自动添加

 

的,而删掉控件时添加的单元并不自动删除)于是我把uses部分的

 

GridsEh, DBGridEh这两个单元引用删掉,OK。

 

  由此我想,虽然DBGridEh和DBGrid的DefaultDrawColumnCell方

 

法参数数量是相同的。但DBGridEh的DefaultDrawColumnCell方法的

 

某个参数与DBGrid的该方法的某个参数的类型有细微不同。然后,

 

编译器对于同名方法实际是overload或override的(具体是哪个操

 

作,我没看,不敢乱说)。也就是说,假设在uses部分先后有A、B

 

两个单元,都有一个Proc方法,如果在程序中不指明使用的是哪个

 

单元的Proc方法,编译器会默认使用后者单元。

 

  我懒得去查看DBGridEh是如何定义DefaultDrawColumnCell方法

 

的,朋友们可以去看一下,如果我说得不对,麻烦您联系我指正。

 

然后,如果把uses部分“GridsEh, DBGridEh,”这两个单元引用往

 

前移两个位置,移到“Grids, DBGrids,”前面去,就会出错。

  如果把程序中注释掉的部分去掉注释,那么,随着“GridsEh, 

 

DBGridEh,”和“Grids, DBGrids,”两个的谁在前谁在后,程序出

 

错的位置也分别变换出现在两个DefaultDrawColumnCell方法上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值