Estou concluíndo um exemplo (que será disponibilizado tão logo
esteja pronto) e gostaria de implementar um relatório de exemplo.
Pesquisei alguma coisa sobre uma classe tiOPFDataset. Em que unit isso
está implementado na versão 2 do tiOPF.
Existe alguma outra forma de implementar relatórios com tiOPF sem ser
através dessa classe?
Um abraço.
O problema é que todos os geradores de relatórios listam os dados a
partir de um dataset.
O FastReport ( http://fast-report.com/en/ ) tem um datasource que
permite passar os dados de qualquer tipo de lista (lista de objetos,
array, etc) para o relatório, assim fica bem fácil de imprimir uma
lista de objetos, por exemplo.
Não tenho certeza agora, mas acho que o ReportBuilder também possui
algo assim.
Para usar outros geradores de relatórios, os dados de objetos devem
ser "convertidos" para um dataset, senão não tem como ligá-los ao
report. Eu tenho aqui um componente bem simples que é herdado da
JvMemoryData, eu passo para ele a lista de objetos que quero listar e
ele copia os dados via RTTI.
1. Colocar um componente "TfrxUserDataSet" no form.
2. Selecionar o dataset no FastReport.
3. Indicar a quantidade de registros que serão impressos.
Exemplo:
frxUserDataSet.RangeEndCount:= Lista.Count;
4. Passar os dados para o report no evento "OnGetValue".
Exemplo:
if CompareText(VarName, 'Valor') = 0 then
Value:= Lista.Items[frxUserDataSet.RecNo].Valor;
5. Definir as variáveis no report. No exemplo acima, incluir um
componente TfrxMemoView e digitar o nome do campo entre colchetes.
Exemplo: "[Valor]"
E é isso! Agora é só chamar o relatório.