首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET 中跨語言調用 Delphi 報表引擎:OCX 封裝與 WPF 宿主

     編輯:關於.NET

公司積累多年的 Delphi 報表引擎(ReportFram.ocx),在遷移至 .NET(WPF + OpenExpressApp)初期無法重寫,需跨語言復用。本文記錄將 Delphi ActiveX 封裝為 OCX,並在 WPF 中通過 WindowsFormsHost 宿主的完整步驟。

第一步:Delphi 封裝 ActiveX/OCX

  • 在 Delphi 中創建 ActiveX Form,將報表引擎邏輯封裝其中。
  • 編譯生成 ReportFram.ocx 並註冊(regsvr32)。

第二步:Visual Studio 生成互操作程序集

  1. 工具箱右鍵 →「選擇項目」→「COM 組件」頁簽 → 瀏覽選中 ReportFram.ocx。
  2. 新建 Windows Forms 專案,將工具箱中的 ReportFramX Control 拖入 Form。
  3. VS 自動生成兩個互操作程序集:ReportFram.dll(RCW)與 AxReportFram.dll(ActiveX 封裝)。

第三步:WPF 宿主 WindowsFormsHost

XAML:

<Grid>
    <WindowsFormsHost Name="windowsFormsHost1" />
</Grid>

代碼後置:

public Window1()
{
    InitializeComponent();
    var rptFram = new AxReportFram.AxReportFramX(); // ActiveX 包裝控件
    windowsFormsHost1.Child = rptFram; // 宿主接管
}

運行效果

WPF 窗口中無縫嵌入 Delphi 報表引擎 UI,功能完整保留。

關鍵點總結

  • WindowsFormsHost 是 WPF 宿主 WinForms/ActiveX 控件的橋樑。
  • VS 拖放生成互操作程序集比命令行 aximp.exe 更直觀不易出錯。
  • 此方案適用於任何 COM/ActiveX 組件的 .NET 遷移過渡期復用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved