Buscando uma solução para acrescentar fotos ao Rave encontrei um artigo que muito me ajudou e então resolvi publicar o artigo e minha adaptação
Utilizei esse artigo e outros para ter uma idéia de como faria a coisa
funcionar. Testei várias formas mas esse artigo aqui foi um achado.
Até mandei um email para o Marcos que foi até muito gentil mas
disse não mexer com Rave faz tempo. Sugeriu que eu entrasse em um grupo
de discussão que ele faz parte. Mas não consegui nada. Então
segue o artigo do Marcos P. Gomes; (Gente boníssima – brigadão
kra). E a solução que criei – eu acho que foi eu mesmo – para
o problema de imprimir uma imagem que não está arquivada em BD
e sim em uma pasta separada dentro do path do seu sistema.no Rave. Sendo que
essa imagem é a foto de um cliente cadastrado e no campo foto temos
apenas o ‘nome’ que foi fornecido para ela:
Veja se isso que segue aí não te faz pensar um pouco... o artigo
de Marcos P. Gomes:
Trabalhando com parâmetros
no Rave Report
Por Marcos P. Gomes
Quando utilizamos o Quick Report torna-se fácil acessar nossas variáveis,
pois os componentes do Quick Report interagem diretamente com o nosso código
Delphi. Já no Rave Report não é passível acessar
uma variável que foi declarada dentro do nosso projeto Delphi.
Calma, não fique apavorado. Para contornar essa dificuldade, assim como
no Crystal Report, o Rave Report nos disponibiliza um recurso muito legal.
Devemos passar esse valor como parâmetro.
Caso prático
Imagine que temos uma variável global em nosso sistema, onde é gravada
a versão do sistema e nos relatórios você tem que imprimir
o número da versão ou seja temos que imprimir o conteúdo
dessa variável que foi declara lá dentro do projeto Delphi.
O conteúdo dessa variável deve ser passado como parâmetro
na hora de imprimir o relatório e o Rave “enxerga” essa
variável como se fosse uma variável interna dele.
No Delphi
Crie uma nova aplicação e deixe-a conforme a figura abaixo.
Agora dê um duplo clique no RvProject e o Rave Visual Design será aberto,
na guia Report, selecione o componente Region, dimensione ele de forma que
ocupe toda a área que será impressa.
No Tree Panel em Report Library e escolha o relatório Report1, após
isso clique em Parameters no Object Inspector digite o nome de nosso parâmetro
que será Versao
Adicione um Band Component e marque a opção Body Header que esta
localizada na opção Band Style.
Adicione um DataText e clique na opção DataField, no Project
Parameters selecione o parâmetro que acabamos de criar que foi o versão,
após selecionar clique em Insert Parameter
O Resultado final será conforme a figura abaixo.
Salve seu projeto, como Project1 mesmo, agora volte lá no Delphi e no
RvProject associe a propriedade ProjectFile ao projeto que acabamos de criar
Adicione o seguinte código no Button.
procedure TForm1.Button1Click(Sender: TObject);
begin
//Seta o Parametro versão com o conteúdo do Label1
RvProject1.SetParam('Versao',Label1.Caption);
//Executa o relatorio
RvProject1.ExecuteReport('Report1');
end;
Agora é só compilar, e testar e nosso resultado final será semelhante
a imagem abaixo.

Preview do Rave com o Valor do parâmetro que foi recebido
Depois de ler isso me deu um estalo. Poxa! Maldita lombalgia. Não posso
ficar muito tempo na mesma posição que ela se rebela. Brincadeira...
Realmente tenho lombalgia mas nos damos muito bem – quando não
carrego peso excessivo. Se é só isso que eu tenho que fazer, ‘Meus
probremas se acabaram!’
Corri a fazer o que o Marcos sugere no artigo dele.
- Criei um parâmetro com o nome de pFoto já em cima do
meu relatório que se chama rFichaIndividual. Nome original não?
- No botão que chama o relatório eu coloquei assim:
procedure TfAlunos.SpeedButton1Click(Sender: TObject);
Var
vCodigo: Integer; //Código do aluno selecionado
vFoto: String; //Essa variável vai ser carregada com o endereço da foto
begin
//O String do campo DBEdit1 é transformado em Inteiro
vCodigo := StrToInt(DBEdit1.Text);
//O Endereço da foto é carregado na variável vFoto;
vFoto := (ExtractFilePath(ParamStr(0))+'Fotos\'+dmTables.tbAlunosFotoAluno.AsString);
//Com o query qrFichaIndividual fazer
with dmReports.qrFichaIndividual do
begin
Close;
//Relaciona a variável vFoto com o parâmetro pFoto do Rave
dmReports.RvRelatorios.SetParam('pFoto', vFoto);
//Aqui são carregados os dados do Aluno tendo como base o código do DBEdit1.
Parameters.ParamByName('pCodigo').value := vCodigo;
//Abre o query
Open;
//Executa o relatório rFichaIndividual.
dmReports.RvRelatorios.ExecuteReport('rFichaIndividual');
end;
end;
- No Rave coloquei um DataText e fui no objectInspector e setei o
parâmetro criado no item 1
- No evento onBeforePrint do Objeto BMP que está colocado no
relatório eu coloquei:
Bitmap1.FileLink := (DataText20.Text);
- Compilei o comando no botão apropriado do relatório
e salvei o relatório. Depois voltei ao Delphi e rodei a aplicação.
Então VoeAle – Não me critiquem não sei francês.
Ah, já ia me esquecendo: o DataText não tem uma opção
visible, então mudei a cor dele para white – de inglês eu
entendo. E foi só.
Abraços!
Por: Marcello M. Mariano
Contato:
marcellommariano@hotmail.com
|