Beruflich Dokumente
Kultur Dokumente
A utilização do Crystal Smart Viewer como interface de visualização de relatórios produzidos no Crystal
Reports possibilita o desenvolvimento de aplicações complexas de cliente/servidor ou multi-camada para o
acesso, preparação e visualização de dados existentes localmente ou através de uma infra-estrutura de rede.
A criação de uma aplicação MFC para a apresentação de um relatório do Crystal Reports pode ser feita da
seguinte forma:
1
Prof. Nuno Ramalho
2
Prof. Nuno Ramalho
3
Prof. Nuno Ramalho
4
Prof. Nuno Ramalho
Adicionamos a livraria craxdrt.dll. Podemos fazê-lo no ficheiro header stdax.h. Esta livraria expõe a
interface IApplication. A palavra reservada #import adiciona “Prt” ao final do nome de cada interface para
indicar que transformou as interfaces em smart pointers. Os smart pointers facilitam-nos, na medida em que
fazem a gestão do ciclo de vida dos objectos.
#include "CCrystalReportViewer11.h"
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
#pragma once
// CMFCMostraRelatorioCRDlg dialog
class CMFCMostraRelatorioCRDlg : public CDialog
{
// Construction
public:
CMFCMostraRelatorioCRDlg(CWnd* pParent = NULL); // standard constructor
5
Prof. Nuno Ramalho
// Dialog Data
enum { IDD = IDD_MFCMOSTRARELATORIOCR_DIALOG };
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
CCrystalReportViewer11 m_Viewer;
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
IApplicationPtr m_Application;
IReportPtr m_Report;
VARIANT dummy;
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
No ficheiro *Dlg.cpp passamos os dados provenientes de m_Viewer para o nosso controlo de ActiveX
IDC_ACTIVEXREPORTVIEWER1
...
...
...
void CMFCMostraRelatorioCRDlg::OnBnClickedButtonVer()
{
m_Application.CreateInstance("CrystalRuntime.Application");
m_Report = m_Application->OpenReport("C:\\MovimentosFornecedor1.rpt");
m_Viewer.put_ReportSource(m_Report);
m_Viewer.ViewReport();
}
6