Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Imprimindo Relatório : VCL Crystal Reports XI - Delphi

Veja nesta Quick como criar um exemplo para imprimir o relatório, e construir um singleton para o mesmo

Olá galera, nesta Quick Tips, irei mostrar um exemplo prático usando a versão do Crystal Reports XI com Delphi 2010. Criaremos uma nova aplicação e vamos adicionar um botão para fazer o exemplo, veja a codificação da Unit. Logo observe também que temos que dar uses em UCrpe32.


unit uFrmPrincipal;

 

interface

 

uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, UCrpeClasses, UCrpe32, StdCtrls, Buttons;

 

type

 

TFrmPrincipal = class(TForm)

    BtnVisualizar: TBitBtn;

    procedure BtnVisualizarClick(Sender: TObject);

private

    { Private declarations }

public

    { Public declarations }

 

    { Observe que criamos um objeto, herdado da Classe TCrpe, que seria o componente responsável pela impressão do Relatório}

 

    Crpe: TCrpe;

end;

 

var

    FrmPrincipal: TFrmPrincipal;

 

implementation

 

{$R *.dfm}

 

procedure TFrmPrincipal.BtnVisualizarClick(Sender: TObject);

begin

    { Observe que é necessário criar o objeto Crpe, antes de usar o mesmo}

 

    Crpe := TCrpe.Create(Self);

    Crpe.Clear;

    Crpe.Printjobs(1);

 

    { Estou utilizando um relatório que se encontra junto com a aplicação, e o nome do mesmo é rptcliente.rpt}

 

    Crpe.ReportName:= ExtractFileDir(Application.ExeName) + '\rptcliente.rpt';

    { Observe que podemos visualizar}

    Crpe.output := toWindow;

    { Observe que podemos exportar}

    Crpe.output := toExport;

    { Observe que podemos imprimir direto}

    Crpe.output := toPrinter;

    Crpe.execute;

end;

end.

 

Para todos os efeitos, pensando em evitar termos várias instancias do objeto Crpe, vou ilustrar abaixo como criar um Singleton, como visto em artigos anteriores, veja os mesmos abaixo :


http://www.devmedia.com.br/post-17889-Introducao--Singleton-Design-Pattern-Delphi-Parte-1.html

http://www.devmedia.com.br/post-17890-Implementacao--Singleton-Design-Pattern-Delphi-Parte-2.html

http://www.devmedia.com.br/post-17891-Usando-os-Metodos--Singleton-Design-Pattern-Delphi-Parte-3.html


Agora codificando a unit, adicione uma nova e salve com o nome uCrpSingleton :


unit uCrpSingleton;

 

interface

 

uses UCrpe32;

 

Type

TCrpSingleton = class(TCrpe)

private

{ private declarations }

    class var FInstance: TCrpSingleton;

    class var FRelatorio: String;

    constructor CreatePrivate;

protected

{ protected declarations }

public

{ public declarations }

    class function GetInstance: TCrpSingleton; static;

    class procedure Imprimir;

    class property Relatorio:String read FRelatorio write FRelatorio;

published

{ published declarations }

end;

 

implementation

 

{ TCrpSingleton }

 

class procedure TCrpSingleton.Imprimir;

begin

    if Assigned(FInstance) then

    begin

        FInstance.Clear;

        FInstance.Printjobs(1);

        FInstance.ReportName:= Relatorio;

        FInstance.Output := toWindow;

        FInstance.Execute;

    end;

end;

 

constructor TCrpSingleton.CreatePrivate;

begin

    inherited Create(Nil);

end;

 

class function TCrpSingleton.GetInstance: TCrpSingleton;

begin

    if not Assigned(FInstance) then

        FInstance := TCrpSingleton.CreatePrivate;

    Result := FInstance;

end;

end.


Bom é isso ai meus caros, qualquer dúvidas não deixem de mandar e-mail para tirar dúvidas ou trocar ideias.


Fico por aqui até a próxima Quick Tip.


Um abraço 

Wesley Y

wyamazack@lithic.com.br

 





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Autor
Wesley Yamazack

Graduado em Analise de Sistemas, no ramo de desenvolvimento há mais de 6 anos, onde atuei em empresas de diversos seguimentos como financeiro, comercial, estacionamento, etc. Atualmente encontro-me como analista desenvolvedor terceirizado da Marinha do Brasil, além de desenvolver projetos particular...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03