将Delphi TFrame后代包装为ActiveX控件

时间:2010-06-17 22:06:44

标签: delphi activex

我正在尝试将TFrame后代包装为ActiveX控件,但似乎无法让控件显示在ActiveX控件向导中。这种方法是否可行,如果可行,是否有任何可以指出的工作实例。

我已尝试按照here的说明进行操作,但正如我所说,控件显示在可用控件列表中。

提前致谢。

2 个答案:

答案 0 :(得分:5)

@Mmarquee,执行此操作的简单方法是使用Activeform,这是一个封装Delphi表单的ActiveX控件,您可以使用@Francois建议或下一个方法,可以轻松部署任何标准表单作为activex控件。

首先,您需要创建一个新的activex控件

alt text http://i46.tinypic.com/og2lc.png

然后添加新的activeform

alt text http://i49.tinypic.com/20z1nk1.png

现在,您需要创建一个新的标准表单并将组件放在此处。

将标准表单的用法添加到位于TActiveForm的单位,并以这种方式声明标准表单的变量

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ActiveX, AxCtrls, Project75_TLB, StdVcl,
  Form1; //your unit with the standard form

type
  TActiveFormX = class(TActiveForm, IActiveFormX)
   private

   ...
   public
   MyForm :  TForm1;

最后在ActiveForm的oncreate事件中,您将代码调用标准表单并嵌入到activeform中。

procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
begin
  MyForm := TForm1.Create(Self); //set the owner 
  MyForm.Parent := Self;//embed the form
  MyForm.Align := alClient;
  MyForm.BorderStyle := bsNone; //hide the border of the form
  MyForm.Visible := True;//makes the form visible
end;

了解更多信息,请查看这些链接

答案 1 :(得分:1)

我认为最简单的方法是正常创建TFrame,因此您可以在常规Delphi应用程序中使用它 然后创建一个空的ActiveForm并将你的框架放入其中 瞧,您可以随时随地使用ActiveForm ......