怎么做一个不继承VCL的activeX的控件???(100分)

  • 主题发起人 主题发起人 celeries
  • 开始时间 开始时间
C

celeries

Unregistered / Unconfirmed
GUEST, unregistred user!
我发现在delphi中做activeX控件总要继承VCL,有什么方法不继承吗?就像VC那样,可以直接做一个基类的ActiveX
 
帮你提一下,我也向知道
 
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控件继承。

 
如果不用VCL 写还不如去用C++,复杂度已经差不多了。
 
用VC的ATL好像很简单哦!
 
多人接受答案了。
 
后退
顶部