É muito comum quando se trabalha com estruturas complexas e/ou orientadas a objetos a necessidade de ler dados em memória para impressão de relatórios. O Rave fornece um componente chamado TrvCustomConnection que abre horizontes, de forma que torna possível a criação estrutural de colunas e dados para um relatório.
Ponha um TRvCustomConnection em um formulário, veja:
var
Form1: TForm1;
Arr_nfcod: array[0..2,0..2] of string;
i: byte;
implementation
{$R *.dfm}
procedure TForm1.RvCustomConnection1Open(Connection: TRvCustomConnection);
begin
Arr_nfcod[0,0] := '123';
Arr_nfcod[0,1] := '1001';
Arr_nfcod[0,2] := 'UN';
Arr_nfcod[1,0] := '124';
Arr_nfcod[1,1] := '1002';
Arr_nfcod[1,2] := 'UN';
end;
Evento OnGetCols do rvCustomConnection (campos):
procedure TForm1.RvCustomConnection1GetCols( Connection:
TRvCustomConnection);
begin
Connection.WriteField('Coluna1',dtString, 10,'','');
Connection.WriteField('Coluna2',dtString, 10,'','');
Connection.WriteField('Coluna3',dtString, 10,'','');
end;
Evento OnGeRows do rvCustomConnection (dados):
procedure TForm1.RvCustomConnection1GetRow(Connection:
TRvCustomConnection);
begin
Connection.WriteStrData('', Arr_nfcod[i,0]);
Connection.WriteStrData('', Arr_nfcod[i,1]);
Connection.WriteStrData('', Arr_nfcod[i,2]);
Inc(i);
end;
Evento OnEof do rvCustomConnection (quando é a hora de parar ?):
procedure TForm1.RvCustomConnection1EOF(Connection:
TRvCustomConnection;
var Eof: Boolean);
begin
Eof := i = Length(Arr_nfcod);
if Eof then i := 0;
end;
Visualização do relatório:
procedure TForm1.btnVisualizarRelatorioClick(Sender:
TObject);
begin
RvProject1.Execute
end;
Atenção: Para que o Rave possa pegar as informações dos dados, é necessário que
a aplicação esteja em execução
Agora abra o designer do Rave e crie um “Data Object”, selecione um “Direct
DataView”, selecione seu RvCustomConnection e voilá ! Todas as colunas do array
prontas para serem utilizadas no relatório.
|