.Net下如何跨语言调用Delphi写的报表引擎
我去年上半年之前一直使用的是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/ ]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架