我正在尝试将TFrame后代包装为ActiveX控件,但似乎无法让控件显示在ActiveX控件向导中。这种方法是否可行,如果可行,是否有任何可以指出的工作实例。
我已尝试按照here的说明进行操作,但正如我所说,控件显示在可用控件列表中。
提前致谢。
答案 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 ......