开发者

Wrapping a Delphi TFrame descendant as an ActiveX control

I am trying to wrap up a TFrame descendant as an ActiveX control, but don't seem to开发者_高级运维 be able to get the control to show up in the ActiveX Control wizard. Is this approach possible, and if so, are there any working examples that I can be pointed at.

I have tried to follow the instructions here, but as I said the control show in the list of available controls.

Thanks in advance.


@Mmarquee, the easy way to do this is use an Activeform , this is an ActiveX control that encapsulates a Delphi form, you can use the @Francois suggestion or the next aproach wich makes easy deploy any standard form as an activex control.

First you need to create a new activex control

Wrapping a Delphi TFrame descendant as an ActiveX control

then you add new activeform

Wrapping a Delphi TFrame descendant as an ActiveX control

Now , you need to create a new standard form and put your component here.

Add the uses of your standard form to the unit where is located the TActiveForm and declare an variable of your standard form in this way

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;

finally in the oncreate event of the ActiveForm you put the code to call the standard form and embeded inside of the 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;

for more info check theses links

  • Creating a VCL Forms ActiveX Active Form
  • Talking to ActiveForms
  • Building ActiveX Controls with Delphi 3 (old , but with excellent information)
  • Delphi 5 Developer's Guide: Creating an ActiveX control


I think the easiest is to create your TFrame normally, so you can use it in regular Delphi apps.
Then Create an empty ActiveForm and put your Frame in it.
And voila, you can use your ActiveForm wherever you want...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜