我从http://vvasp.cn/code/downinfo/20188.shtml下载了Ehlib组件,我想用其中的delphi6版的,解开压缩包后,delphi6文件夹下有4个.dpk文件:
DclEhLib60.dpk
DclEhLibDataDrivers60.dpk
EhLib60.dpk
EhLibDataDrivers60.dpk该文件夹下其他文件有:
EhLib60.dof
DclEhLib60.res
DclEhLibDataDrivers60.res
EhLib60.res
EhLibDataDrivers60.res在delphi6环境下执行File-->Open,分别打开这4个.dpk文件,然后Install和Compile,都提示找不到DBSumLst.dcu文件,是我下载的压缩包有问题,还是我的安装有问题?

解决方案 »

  1.   

    我从网上找到一片文章,根据该文的步骤安装后,没有提示错误了,可是安装后,在DELPHI的组件面板上找不到TDBGridEh等控件,为什么?网址:
    http://hi.baidu.com/yehang_studio/blog/item/5da8df08a80ec1910a7b82dc.html
    每次安装Delphi 不管是D7 还是D6总是和她战斗很长时间,不是D7本身的问题,而是一大堆控件的问题。所以每次安装的时候都很头疼,下面是在网上的一篇安装Ehlib的教程,对我太有帮助啦。。 此篇 EhLib 使用教程简单描述一下 EhLib 的安装方法。EhLib 在 Delphi 7 下的安装方法:
    1、将 EhLib 解压到一个目录,如:E:\VCL\EhLib;
    2、将 EhLib 安装目录下 Common 目录、DataService 目录下的所有文件拷贝到 EhLib 安装目录下的 Delphi 7 目录;
    3、启动 Delphi 7;
    4、选择 File — Open Project,跳转到 EhLib 安装目录,在出现的打开文件对话框文件类型下拉列表中选择 Delphi Package(*.dpk;*.dpkw),在文件列表中选择 EhLib70.dpk 打开,然后在出现的 Package 窗口中点击按钮 Compile,编译此包;
    5、按照上一步相同的方法打开 DclEhLib70.dpk,点击 Compile ,然后再点击 Install ,安装此设计时包;
    6、打开 Delphi 菜单-Tools-Environment Options-Library-Library Path,将 EhLib 安装目录下的 Delphi 7 目录添加到库搜索路径中,本例中该路径是 E:\VCL\EhLib\Delphi7。
    至此,EhLib 在 Delphi 7 下即安装成功,在关闭上述打开的包文件时,会提示是否保存,在此处选择否,不保存。
    EhLib 在 Delphi 5、Delphi 6、Delphi 8 下依上述方法都可正确安装。
    EhLib 在 Delphi 2007、Delphi 2006 下的安装步骤跟上述也完全相同,不同在于他们新添加了两个包,按照上述第 4 步指示方法安装 EhLibDataDrivers110.dpk、按照第 5 步所示方法安装 DclEhLibDataDrivers110.dpk 即可。
    安装 Delphi 组件,其实就是安装扩展名为 .dpk 的 Package 包文件,一般包分为运行时包和设计时包,运行时包打开后编译即可;设计时包一般以 Dcl 为包名前缀,设计时包不但需要编译,同时还需要安装才可出现在 Delphi 组件面板上,其它组件如 FastReport 按照此原则都可正确安装。
    注:EhLib 最新版 4.2.12 中文汉化版可以在 Delphi 盒子下载。
    PS:可是我进行第4步时,总是提示这样的错误:Could not create output file 'EhLib70.dcu'。
    也遇到过这种问题,不过那是因为没有关掉应用程序又再次执行。可是这一次不一样,原因是.dcu文件不是可执行文件,它是在编译过程中生成的文件。
    在编译EhLib70.dpk不成功之后,我开始编译DclEhLib70.dpk,可是仍然提示:Could not create output file 'EhLibVCL.dcu'。让人很郁闷。
    在失败了很多次之后,我把安装目录下的‘Ehlib70.dcu',和‘EhLibVCL.dcu’删除掉,再按照步骤进行。OK 编译成功。
     
      

  2.   


    1.添加E:\VCL\EhLib\Delphi7路径到Delphi 菜单-Tools-Environment Options-Library-Library Path2.启动 Delphi 7,选择 E:\VCL\EhLib\Delphi7目录中的 EhLib70.dpk 打开,然后在出现的 Package 窗口中点击按钮 Compile,编译此包;
    按照上一步相同的方法打开 DclEhLib70.dpk,点击 Compile ,然后再点击 Install ,安装此设计时包;刚试验过,可以安装,没有问题.安装之后在组件面板上的名称是:Ehlib如果还是无法安装,到盒子上下载一个最新的Ehlib版本安装一下.
      

  3.   


    1.添加E:\VCL\EhLib\Delphi7路径到Delphi 菜单-Tools-Environment Options-Library-Library Path2.启动 Delphi 7,选择 E:\VCL\EhLib\Delphi7目录中的 EhLib70.dpk 打开,然后在出现的 Package 窗口中点击按钮 Compile,编译此包;
    按照上一步相同的方法打开 DclEhLib70.dpk,点击 Compile ,然后再点击 Install ,安装此设计时包;刚试验过,可以安装,没有问题.安装之后在组件面板上的名称是:Ehlib如果还是无法安装,到盒子上下载一个最新的Ehlib版本安装一下.
      

  4.   

    将 Common 目录中的内容拷贝到 Delphi6 目录,然后安装 Delphi6 目录中相应的 .dpk 文件:
    1.添加Delphi6所在路径
    2.编译EhLib6.Dpk
    3.编译EhLibDataDrivers6.Dpk
    4.编译并安装DclEhLib6.Dpk
    5.安装DclEhLibDataDrivers6.Dpk
      

  5.   

    安装后,在组件面板上找到EhLib了,也能将DBgridEh拉到Form里去了,可是编译时通不过。检查发现,无法进入类TDBGridEh 的定义(DBGridEh1:TDBGridEh;),正常情况下,按住Ctrl后点击TDBGridEh是能进入类TDBGridEh的定义体内的。请问,组件面板上已经有了DBGridEh了,为什么无法使用?
      

  6.   

    我的表单上使用了一个TDBGrid控件,该控件隔行显示不同的颜色要调用ChangeColor函数,程序运行后,光标停在ChangeColor(ADOQuery1,DBGrid1,Rect,DataCol,Column,State);处,并提示:“Incompatible types”。注释掉ChangeColor(ADOQuery1,DBGrid1,Rect,DataCol,Column,State);后,就不会提示错误了。
    为什么自定义函数ChangeColor与TDBGridEh会不兼容呢?
    调用函数:procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    //隔行改变网格背景色:
    ChangeColor(ADOQuery1,DBGrid1,Rect,DataCol,Column,State);
    end;
    函数体如下:procedure ChangeColor(query_mydate:TADOQuery;dbgrid_mygrid:TDBGrid;const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    //隔行改变网格背景色:
     if query_mydate.RecNo mod 2 = 0 then
       dbgrid_mygrid.Canvas.Brush.Color := clInfoBk //定义背景颜色
     else
       dbgrid_mygrid.Canvas.Brush.Color := clMoneyGreen; //定义背景颜色
    //定义网格线的颜色:
       dbgrid_mygrid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
     if (GdSelected in state) or (gdFocused in state) then
       dbgrid_mygrid.Canvas.Brush.Color := clred;
       dbgrid_mygrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
      

  7.   

    为什么自定义函数ChangeColor与TDBGridEh不相兼容呢?