VC2015调用Grid++report报表控件

Grid++report这是一个国产报表控件,从2.x就开始接触,基本所有的学习资源,来自于自带的文档和例子。能学多少靠摸索。整体功能还是不错的。他提供了3个控件,一个组件。在VC2015如果不想用控件,只想调用组件实现打印的功能,怎么办呢?步骤如下:

(1)在afxstd.h文件中包含头文件如下:

#include <atlbase.h>
extern CComModule _Module;
#include <atlcom.h>

(2)在程序APP文件中,声明如下:

CComModule _Module;//全局变量
BOOL CMFCApplication1App::InitInstance()
{//初始化报表COM组件
    HRESULT hRes = ::CoInitialize(NULL);
    ATLASSERT(SUCCEEDED(hRes));
    _Module.Init(0, AfxGetInstanceHandle());
    //......
}
int CMFCApplication1App::ExitInstance()
{//重写虚函数
    _Module.Term();
    ::CoUninitialize();
    return CWinApp::ExitInstance();
}

(3)在对话框的头文件中,加入如下:

#include "GetPath.h"
#include "GRImport.h"

当然需要先将Grid++report目录下的Utility文件夹复制到工程目录中,并在“项目属性->VC++目录->包含目录”添加Utility文件夹。

(4)在对话框类中添加成员变量:IGridppReportPtr   m_pGridppReport;

BOOL CMFCApplication1Dlg::OnInitDialog()
{
     //创建报表主对象
     m_pGridppReport.CreateInstance(__uuidof(GridppReport));
     ATLASSERT(m_pGridppReport != NULL);
     //加载模板文件
     //从文件中载入报表模板数据到报表主对象
     CString FileName = GetReportTemplatePath(_T("标准过磅单1.grf"));
     m_pGridppReport->LoadFromFile((LPCTSTR)FileName);
     //第(7)步还有代码
}
void CMFCApplication1Dlg::OnDestroy()
{
     CDialogEx::OnDestroy();
     //释放主报表对象
     m_pGridppReport.Release();
}
void CMFCApplication1Dlg::OnBnClickedButton1()
{
     //直接打印报表
     m_pGridppReport->Print(TRUE);
}
void CMFCApplication1Dlg::OnBnClickedButton2()
{
     // 显示预览窗口
     m_pGridppReport->Title = _T("标准过磅单1");
     m_pGridppReport->PrintPreview(TRUE);
}

(5)同时将导出库复制到工程路径下,即gregn.tlb 和 grdes.tlb

(6)要动态修改报表参数,可以新建一个类,继承报表事件处理接口。

//Scale3DCReportEvent.h头文件
#pragma once
#include "GridppReportEventImpl.h"

class CScale3DCReportEvent :public CGridppReportEventImpl
{
public:
	CScale3DCReportEvent();
	~CScale3DCReportEvent();

	virtual void Initialize(void);
	IGridppReportPtr m_pGridppReport;
};
//Scale3DCReportEvent.cpp文件
#include "stdafx.h"
#include "Scale3DCReportEvent.h"
#include "GridppReportEventImpl.c"

CScale3DCReportEvent::CScale3DCReportEvent()
{
}
CScale3DCReportEvent::~CScale3DCReportEvent()
{
}
void CScale3DCReportEvent::Initialize(void)
{
    m_pGridppReport->ParameterByName(_T("车号"))->AsString =_T("猎豹太空梭0X29");
}

(7)在相应的对话框头文件中包含:

#include "Scale3DCReportEvent.h"//事件包装类

#include "GetPath.h"  //上面步骤已包含过

#include "GRImport.h"

在窗口类中声明成员变量:

//报表事件代理指针

CGridppReportEventImpl *m_pReportEvents;

在窗口的OnInitDialog()中添加如下代码:

//创建事件响应对象
CComObject<CScale3DCReportEvent> *pEvent;
CComObject<CScale3DCReportEvent>::CreateInstance(&pEvent);
m_pReportEvents = pEvent;
m_pReportEvents->AddRef();
pEvent->m_pGridppReport = m_pGridppReport;//事件代理指针
HRESULT hr = m_pReportEvents->DispEventAdvise(m_pGridppReport, 
             &__uuidof(_IGridppReportEvents));
ATLASSERT( SUCCEEDED(hr) );

(8)在ON_WM_DESTROY消息中继续添加代码:

//释放事件代理
if (m_pReportEvents != NULL)
{
    HRESULT hr = m_pReportEvents->DispEventUnadvise(m_pGridppReport, 
                 &__uuidof(_IGridppReportEvents));
    m_pReportEvents->Release();
    m_pReportEvents = NULL;
    ATLASSERT(SUCCEEDED(hr));
}

原文地址:http://blog.51cto.com/9233403/2118571

时间: 2024-11-12 13:23:06

VC2015调用Grid++report报表控件的相关文章

UniGui中使用Grid++Report报表控件子报表获取数据的方法

Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料文档很少,经过摸索,Grid++Report的子报表要在uniGUi中正确获取子报表数据,只能通过Ajax数据回调的方式进行,在uniGUi中对前端Ajax的响应,就要是通过控件的AjaxEvent事件来处理.报表模板的展示部分的HTML代码要放在UniURLFrame控件的HTML属性中.Ajax

java 一款可以与ssm框架完美整合的web报表控件

硕正套件运行于客户端(浏览器),与应用服务器(Application Server)技术无关,所以能完全用于J2EE. ASP.Net.php等技术开发的Web应用产品中. 硕正套件部署于服务器,支持包括Tomcat.IIS.WebSphere在内的所有Web服务器.  硕正套件本身以C/C++开发,性能无可匹敌.对于Chrome.Firefox而言,硕正套件是一个符合Mozilla  NPAPI 规范的Plug-in插件:而对于 IE 浏览器而言,硕正套件则是一个标准的ActiveX控件.  

二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu.com/s/1o6MAKCa 前言:本章介绍除DotNetBar2控件套件之外的另外一些常用控件,包括Grid++Report报表.条形码.Excel导出.图表控件ZedGraph:类似这些控件网上免费开源的太少了,经过一番对比和使用感受最后决定把这几个控件整合到EFW框架中供大家选择使用: 本

Report Machine(RM)报表控件简单用法-delphi

RM(Report Machine)是一个功能强大的Delphi报表控件包.使用它可以制作出非常复杂的报表.下面讲述最简单的用法: 在Form上放上两个数据库控件:ADOConnection和ADOQuery设置好ADOConnection的ConnectionString.LoginPrompt=False.ADOQuery的Connection指向ADOConnection.ADOQuery的SQL设置好数据查询语句. 在Form上放上两个RM报表控件:RMDBDataSet和RMRepor

ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表

原文:ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表 本篇文章将介绍区域报表和页面报表的常见使用场景.区别和选择报表类型的一些建议,两种报表的模板设计.数据源(设计时和运行时)设置.和浏览报表的区别. ActiveReports 报表控件官方中文入门教程 (1)-安装.激活以及产品资源 ActiveReports 报表控件官方中文入门教程 (2)-创建.数据源.浏览以及发布 本篇文章包括以下部分: 1.区域报表和页面报表的区别 两种报表的具体应用场景 区

可导出窗体和背景的报表控件QuickReport

QuickReport 是一个100% 用Delphi 代码编写的分栏报表生成器控件,它可与Delphi 和C++Builder 完美整合,并且Delphi/C++Builder IDE 中使用表单设计器作为报表设计器来设计报表. 具体功能: 报表设计:QuickReport 是一个用Delphi 编写的分栏报表生成器.可与Delphi 和C++Builder 完美整合,在Delphi/C++Builder IDE 中使用表单设计器作为报表设计器来设计报表. 数据连接:Quickreport 可

浅谈ASP.NET报表控件

浅谈ASP.NET报表控件 作者:管理员 来源:51CTO 浏览:360 发布时间:2010-6-19 0:26:07 OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口. 接着找到了ComponentOne的Web chart做出的各种效果图,效果极佳.我一下子被迷住了,决定就是它,于是马不停蹄的下了最新版100多M的安装文件,又花一上午找了个可以用的注册码,再找了篇教程,OK万事俱备,兴匆匆的开始写代

在web浏览器窗口中编辑报表的报表控件Stimulsoft Reports.Web

Stimulsoft Reports.Web是一个报表工具,适用于Web的报表生成器控件.其设计的目的在于通过Web浏览器创建和渲染报表.您可以创建报表,显示报表,打印报表,导出报表. Stimulsoft Reports.Web将提供完整的报表创建周期,从报表模板开始到在浏览器中显示报表为止.这一过程可在web浏览器未被关闭时完成.Stimulsoft Reports.Web是第一款可以让您直接在Web中编辑报表的报表工具.在您的客户端的机器里不需要安装.Net框架.ActiveX控件或其他特

(转)浅谈ASP.NET报表控件

项目中有报表图形化的需求, 于是开始在网上找第三方chart控件.因时间紧迫,大至确定了几个候选:一.Office带的OWC控件:二.ComponentOne:三.Web Chart.本文将讲解ASP.NET报表控件. AD:2014WOT全球软件技术峰会北京站 课程视频发布 OWC似乎使用者居多,但看见有网友在帖中抱怨OWC在使用时需要许可证书,于是将其排除,我可不想BOSS在看报表时弹出一个“没有许可证书”的窗口. 接着找到了ComponentOne的Web chart做出的各种效果图,效果