2010-06-17 59 views
2

我想包裝一個TFrame後裔作爲一個ActiveX控件,但似乎無法獲得控件顯示在ActiveX控件嚮導中。這種方法是否可行?如果有的話,是否有任何我可以指出的工作示例。包裝一個Delphi TFrame後代作爲一個ActiveX控件

我試圖按照說明here,但正如我所說的可用控件列表中的控件顯示。

在此先感謝。

回答

5

@Mmarquee,最簡單的方式做,這是使用Activeform,這是一個封裝了德爾福形式的ActiveX控件,您可以使用@弗朗索瓦的建議或下一個方法可以輕鬆地將任何標準形式作爲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事件你把代碼調用標準表單並嵌入到活動表單中。

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; 

更多信息檢查論文鏈接

+0

我想你意思是**'TFrame1' **而不是'TForm1'(在'TActiveFormX.ActiveFormCreate'方法中),不是嗎? – 2010-06-18 07:08:40

1

我認爲最簡單的就是正常創建你的TFrame,所以你可以在普通的Delphi應用程序中使用它。
然後創建一個空的ActiveForm並將其放入其中。
瞧,你可以用你的ActiveForm,無論你想...