编写com的时候会用到type library
现在有
type
  TA = class(TAutoObject, IA);
  TB = class(B, IB);
  IA = interface(IDispatch);
  IB = interface(IA);
end;
现在接口IA中定义了两个方法,IB没有新增任何定义
类TA中实现了接口IA, 
现在注册的时候,type library会自动在类TB中增加两个方法
可类TB已经从父类中继承了这两个方法了呀!!!!
真是郁闷,每次注册activeX都会生成这两个方法,删掉后,编译没有问题,可再注册还会生成,
气死我了,
怎么把这个自动功能去掉?

解决方案 »

  1.   

    还有一个问题
    type library生成的idl文件中,有代码,可以注册
    coclass Product
      {
        [default] interface IProduct;
      };如果在接口中选中VTable. Source. Restricted其中一项,比如VTable
    则生成下面代码,注册的时候出错,说什么东西不在search path里面
    coclass Product
      {
        [default, defaultvtable] interface IProduct;
      };
      

  2.   

    你的定义就有问题!TB = class(B, IB);     TB 又不是从 TA 继承,根本就不会继承 TA 中关于 IA 方法的实现。所以 TB 肯定要重新实现 IA 方法嘛!
      

  3.   

    把 Tools | Environment Options | Type Library | Display updates before refreshing 选中。这样当在 Type Library Editor 中修改了接口时,它会提示你是否需要在实现类中添加接口方法。这时你可以选择不生成某些方法。就你的例子来说,你可以选择不在 TB 中实现 IA 的方法。只要你不改动接口,Type Library Editor 就不会自动帮你添加方法定义,就算是要改动,也会提示你!
    另: 问题写错了,就是写错了。 楼主至少在提问的时候,就该检查检查,这也是对自己负责。再说任何人都可能会犯低级错误,这也不是什么丢脸的事情!