tags:

views:

75

answers:

2

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.

+1  A: 

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...

François
+4  A: 

@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

alt text

then you add new activeform

alt text

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

RRUZ
I think you meant **`TFrame1`** instead of `TForm1` (in the `TActiveFormX.ActiveFormCreate`-method), didn't you?
Oliver Giesen