zoukankan      html  css  js  c++  java
  • .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给我们自动生成一个适配程序集。

    1. 在Toolbox中添加一项
    2. 新建一个Window Application,把ReportFramX Control拖入到一个Form上,这时你可以看到Solution Explorer的项目下自动生成了两个dll:ReportFram.dll和AcReportFram.dll。这是VS生成,应该会有命令可以生成,没有细查。
              
    3. 在WPF下使用AxReportFramX
      使用WindowsFormsHost控件使用Win下的Control,Xaml如下所示:
         <Grid>
      <WindowsFormsHost Name="windowsFormsHost1" />
      </Grid>
      代码如下:
              public Window1()
              {
                  InitializeComponent();
                  var rptFram = new AxReportFram.AxReportFramX();
                  windowsFormsHost1.Child = rptFram;
              } 
      运行界面如下:

    欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

  • 相关阅读:
    PAT (Advanced Level) Practice 1097 Deduplication on a Linked List (25分) (静态链表+测试实例)
    PAT (Advanced Level) Practice 1096 Consecutive Factors (20分)
    POJ
    LightOJ
    LibreOJ
    SGU 223 国王 状压DP
    HDU
    CodeForces
    【模板】 拉格朗日插值
    模板 求二次剩余
  • 原文地址:https://www.cnblogs.com/zhoujg/p/1696757.html
Copyright © 2011-2022 走看看