我去年上半年之前一直使用的是Delphi,公司在這上面也積累了很多公共資源。在06年9月實現了一個 功能強大的報表引擎,公司到現在基本每個項目組都在使用它做報表。現在在.Net下,使用 OpenExpressApp,暫時也沒有足夠精力去重新開發一個報表引擎(OpenReport),所以就想到先重用以前 的報表引擎。
下面就介紹一下如何在WPF中使用Delphi下的功能。
封裝Delphi引擎為一個OCX控件
之前的報表引擎是基於Delphi下的,在跨語言應用下,最容易想到的就是使用ActiveX,於是使用 Delphi做了一個ActiveXForm,封裝了一個OCX控件並注冊,名稱為【ReportFram.ocx】,這裡就不詳細介 紹具體生成過程了。
在.Net中使用
.Net下的控件都是從Control繼承下來的,要想使用OCX控件,就需要在OCX和Control之間適配一下。 Delphi封裝的OCX本身並不知道如何在.Net下使用,我們可以通過以下步驟,由VS給我們自動生成一個適 配程序集。
在Toolbox中添加一項
新建一個Window Application,把ReportFramX Control拖入到一個Form上,這時你可以看到Solution Explorer的項目下自動生成了兩個dll:ReportFram.dll和AcReportFram.dll。這是VS生成,應該會有命 令可以生成,沒有細查。
在WPF下使用AxReportFramX
使用WindowsFormsHost控件使用Win下的Control,Xaml如下所示:
<Grid><br> <WindowsFormsHost Name="windowsFormsHost1" /><br> </Grid><br>
代碼如下:
public Window1()
{
InitializeComponent();
var rptFram = new AxReportFram.AxReportFramX();
windowsFormsHost1.Child = rptFram;
}
運行界面如下:
歡迎轉載,轉載請注明:轉載自周金根 [ http://zhoujg.cnblogs.com/ ]