Delphi就是基于VCL的,所以在Delphi中编写ActiveX控件应该从VCL继承,也就是从TWinControl继承。如果实在要写基类,就只能用PASCAL了。
其实也可以在delphi中新建一个只有一个窗体的工程,然后改写 unit 单元实现部分,
unit Unit1;
interface
uses
Windows, ActiveX, Classes, Controls
type
TMyActivex=class(TActiveXControl)
...
private
...
public
...
protected
...
end;
implementation
end.
即直接从TActiveXControl继承,由于TActiveXControl已经实现了每个ActiveX控件都必须的IOLEObject接口,可以为我们省下不少 。然后你就可以像编写普通控件一样,实现它的事件、属性、方法。
但要注意的是,下面的一些方法的实现是必不可少的:
procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage)
override;
procedure EventSinkChanged(const EventSink: IUnknown)
override;
procedure InitializeControl
override;
还要注意,在uses子句中必须包含 ActiveX。
这样编写 ActiveX控件时就不一定从控件面板中的规定死的VCL控件继承。