作者:mikel
原文地址:http://www.mikel.cn
最近需要做列印發貨單的功能,以前用delphi的reportmachine控制項做報表,功能很強大,可以設計報表並且報表檔案和程式分離,優點就不多說了,這次需要連紙列印,於是想到用activex組件開發列印組件。
這樣這個教程就分為兩部分,一部分說Delphi的activex組件開發,另一部說ASP.NET MVC如何調用activex組件進行列印。
1.Delphi開發Activex組件
- 建立一個ActiveXform項目,:
建立activexform
- 設定項目發布選項,需要提醒的是由於Delphi7的bug,只在第一次建立項目後能夠設定Web Deploy選擇,等關閉項目再開啟就不能設定了,這個需要注意!
設定activexform項目
-
- 拖拽RMRport控制項到表單中,拖拽RMUserDataset組件到表單,這個適用於傳遞資料給RMReport報表列印用的,
添加RMReport列印組件到表單
- 設定RMReport1的DataSet屬性為RMUserDataset1
- 聲明對外方法和屬性:選擇 View ->Type Library
實現print方法列印
註冊Activex組件
編譯產生Activex組件
到此已經成功建立了一個帶列印功能的ActiveX組件,具體如何使用ReportMachine 報表元件的教程,稍後我會寫個詳細的教程
下面就是.Net如何調用Activex組件了。
2.ASP.NET MVC 調用Activex組件列印
1.添加Activex組件的引用
2.選擇Delphi的報表Activex組件
3.引用報表檔案到Content檔案夾
4.在About.aspx.cs的onload時間中調用Delphi的Activex組件聲明的print方法進行列印,需要賦予伺服器上report.rmf也就是報表檔案的絕對位址給print方法,這樣報表元件才能正確載入報表檔案,具體代碼如下:
查看原始碼
列印協助
02 |
using System.Collections.Generic; |
06 |
using ActiveFormProj1; |
08 |
namespace TangCMS.Views.Home |
10 |
public partial class About : ViewPage |
12 |
protected override void OnLoad(EventArgs e) |
14 |
//聲明Activex組件的ActivexForm對象 |
15 |
ActiveFormX report = new ActiveFormX(); |
16 |
//調用Activex組件聲明的print方法 |
17 |
string file = Server.MapPath("~/content/report.rmf"); |
5.發布網站,點擊About Us連結會彈出報表預覽列印視窗,最終效果如下: