我用delphi7建立了一个VCL控件TTestControl(继承TCustomControl),完成功能代码后,注册到IDE的组件工具栏,再建立一个新ActiveX Control时,在向导里没有选择类TTestControl选择,请问是什么问题?

解决方案 »

  1.   

    这是VCL的局限,它只能继承可视化控件
      

  2.   

    我继承的TCustomControl不就是可视化控件吗?
      

  3.   

    一下内容仅供参考在ActiveX控件向导的下拉列表框中有VCL控件的列表,但并不是所有的VCL控件都在这个清单中,被列出来的VCL控件要满足下面三个准则: 
    1.VCL控件必须在当前安装的设计包中(它必须在组件面板中)。 
    2.VCL控件必须是TWinControl的派生类,当前非窗口控件不能转换为ActiveX控件。 
    3.VCL控件必须是还没有被RegisterNonActiveX()过程列出来的,RegisterNonActiveX()过程在Delphi的在线帮助中介绍。 
    许多标准的VCL控件无法转换为ActiveX控件,是因为其中有些转换成ActiveX控件没有意义,或者是因为转换需要大量的工作,超出了向导能提供的功能。TDBGrid控件是一个很好的VCL控件,但转换成ActiveX控件没有意义,因为它需要另一个类TDataSource作为它的属性,而这用ActiveX是没法提供的。TTreeView在转换成ActiveX控件时需要大量的工作,因为在TTreeView中的节点在ActiveX中很难表示。
     
      

  4.   

    一定要有Paint事件,要不然,DELPHI会把这个控件忽略掉,呵呵
        procedure Paint; override;