首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 整合 Data Dynamics ActiveReports 2 實現報表設計與預覽

     編輯:VC 教學

ActiveReports 2 是基於 ActiveX Designer 的報表控件,提供類 VB 的設計體驗、完整 VB 代碼支援、ActiveX/OLE 物件嵌入、向導式快速建報。本文記錄在 VC++ 6.0 MFC 單文檔專案中以控件宿主方式整合的完整步驟。

環境準備

  • 安裝 ActiveReports 2 Pro,註冊 arpro2.dll 及 Viewer 控件。
  • VC 專案:MFC AppWizard (exe) → Single Document。

導入 ActiveX 控件類別

  1. Viewer 控件:ClassWizard → Add Class → From TypeLib → 註冊表選 ActiveReports Viewer 2 <1.0> → 生成 CARViewer(介面 IARViewer)。
  2. 報表引擎:同樣操作 → 檔案選 Common Files\Data Dynamics\ActiveReports Pro\arpro2.dll → 生成 CActiveReport(介面 IActiveReport)。

修正 CLSID(關鍵步驟)

向導生成的 GetClsid() 往往不正確,需手動修正:

// CActiveReport
CLSID const& GetClsid() {
    static CLSID const clsid =
    { 0x9EB8768B, 0xCDFA, 0x44DF, { 0x8F,0x3E,0x85,0x7A,0x84,0x05,0xE1,0xDB } };
    return clsid;
}

// CARViewer
CLSID const& GetClsid() {
    static CLSID const clsid =
    { 0x8569D715, 0xFF88, 0x44BA, { 0x8D,0x1D,0xAD,0x3E,0x59,0x54,0x3D,0xDE } };
    return clsid;
}

視圖類整合代碼

// 視圖類成員
CARViewer m_arViewer;
CActiveReport m_arReport;

int CMyView::OnCreate(LPCREATESTRUCT lpCS) {
    if (CView::OnCreate(lpCS) == -1) return -1;

    m_arViewer.Create(_T(""), WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), this, 1);
    m_arReport.Create(_T(""), WS_POPUP, CRect(0,0,0,0), this, 2);

    m_arReport.put_documentName(_T("test"));
    m_arViewer.put_RulerVisible(TRUE);
    m_arViewer.put_ToolbarVisible(TRUE);
    m_arViewer.put_TOCEnabled(FALSE);

    COleVariant varRpx(_T("Report.rpx"));  // 報表模板檔
    m_arReport.LoadLayout(varRpx);
    m_arViewer.put_ReportSource(m_arReport.GetReport());
    m_arViewer.Refresh();

    return 0;
}

void CMyView::OnSize(UINT nType, int cx, int cy) {
    CView::OnSize(nType, cx, cy);
    m_arViewer.SetWindowPos(NULL, -1, -1, cx, cy,
                            SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER);
}

報表模板準備

  • 使用 ActiveReports 獨立設計器設計 Report.rpx,放置專案目錄或指定完整路徑。
  • 模板可包含數據綁定、圖表、OLE 物件、條碼等高級元素。

運行效果

程式啟動即在視圖區顯示報表預覽,工具列支援列印、導出、縮放、頁碼導航,尺寸隨視圖自適應。

避坑提示

  • 若 LoadLayout 失敗,檢查 Report.rpx 路徑與版本是否匹配(AR2 專用)。
  • 部署機需安裝 ActiveReports 2 Runtime 或註冊相關 DLL/OCX。
  • MFC 專案需啟用 Automation 支援(Project → Settings → General → Microsoft Foundation Classes: Use MFC in a Shared DLL 並勾選 Automation)。

此方案讓 VC++ 快速擁有專業級報表設計/預覽/列印能力,無需自行開發報表引擎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved