Olá galera, nesta Quick Tips, irei finalizar o artigo sobre passagem de parâmetros no Crystal Reports XI diretamente pelo Delphi 2010, usando a VLC disponível no nosso site da DevMedia.
Vamos criar um exemplo simples, em Delphi, salve a unit como uFrmRelatorioCategoria.pas. Nela adicione :
- 2 TButton(BtnVisualizar,BtnCarregarParametros);
- 1 Tcrpe;
- 1 TopenDialog
- 1 TMemo
unit uFrmRelatorioCategoria;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, UCrpeClasses, UCrpe32;
type
TFrmRelatorioCategoria = class(TForm)
Crpe1: TCrpe;
OpenDialog1: TOpenDialog;
BtnVisualizar: TButton;
BtnCarregarParametros: TButton;
Memo1: TMemo;
procedure BtnVisualizarClick(Sender: TObject);
procedure BtnCarregarParametrosClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmRelatorioCategoria: TFrmRelatorioCategoria;
implementation
{$R *.dfm}
procedure TFrmRelatorioCategoria.BtnCarregarParametrosClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Clear;
with Crpe1 do
begin
WindowState := wsMaximized;
WindowButtonBar.PrintSetupBtn := True;
ReportName := OpenDialog1.FileName;
Memo1.Lines.AddStrings(ParamFields.Names);
end;
end;
end;
end.
Veja como é simples passar os parâmetros diretamente pelo Delphi, podemos fazer também uma “brincadeira”, com a propriedade ParamFields, que seria retornar a lista de parâmetros de um relatório, vamos ver como fazer isso logo abaixo, vamos implementar no BtnCarregarParametros.
procedure TFrmRelatorioCategoria.BtnVisualizarClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
with Crpe1 do
begin
WindowState := wsMaximized;
WindowButtonBar.PrintSetupBtn := True;
ReportName := OpenDialog1.FileName;
ParamFields.ByName('p_Categoria', '').CurrentValue := QuotedStr( 'PLUS' );
Execute;
end;
end;
end;
Veja o Exemplo construído:

Baixe neste artigo o exemplo completo juntamente com o relatório para teste.
Fico por aqui ate à próxima Quick Tips. Qualquer dúvida, dica, ou sugestão, envie um e-mail estarei a disposição para responder.