Fórum Imagem no QuickReport fica preta #233621

21/05/2004

0

Olá galera!

Estou tendo uns probleminhas no QuickReport... Eu desenho no canvas de um TQrImage, que está dentro do meu relatório. Eu chamo este relatório, criando o form dele (de preview) em tempo de execução. Até aí tudo bem, mas depois de umas 3 ou 4 vezes que eu chamo este relatório, este TQrImage fica Todo preto.

Alguém saberia me dizer porque?

obrigado!


Nildo

Nildo

Responder

Posts

21/05/2004

Cabelo

Vc dá um free no Canvas quando sai do preview??


Responder

Gostei + 0

21/05/2004

Nildo

Não, pois o próprio QrImage faz isso. Eu acho que faz porque quando eu tento dar um Free no canvas dele, ele dá ´Acces Violation´

Alguma outra idéia?


Responder

Gostei + 0

21/05/2004

Cabelo

Tenta desenhar em uma variável tipo canvas, jogue ela no rel em RUN TIME, e na hora de fechar o Report dá um Free na variável, sem usar o Canvas do preview, acho que assim dá certo..

Cabelo


Responder

Gostei + 0

21/05/2004

Nildo

Acabei de tentar... Naum funcionou...


Responder

Gostei + 0

21/05/2004

Cabelo

continua a dar o mesmo erro??

ou vc não conseguiu visualizar o canvas no rel??


Responder

Gostei + 0

21/05/2004

Nildo

Tipo, depois de uns 2 ou 3 previews, a imagem fica toda Preta. Eu posso fazer o que quiser no Canvas que aparece e imprime tudo preto (onde está o QrImage)


Responder

Gostei + 0

21/05/2004

Cabelo

Cara é o seguinte :

Eu não sei como vc faz para dar um preview, mas normalmente eu crio ele sobre um form :

assim :

application.CreateForm(TformBase, FormBase);
FormBase.QRReport.preview;
FormBase.Release;

isto no evento click do botão que chama o rel, assim eu deveria funcionar, pq vc dá um release do form todo, com certeza ocorre o free do canvas, pq o quê parece é que ele está escrevendo toda vez sobre o componente Image, parece que o canvas não está sendo liberado..

Espero ter ajudado..

Sem mais

Cabelo


Responder

Gostei + 0

21/05/2004

Nildo

Na verdade eu coloco o Action := caFree no FormClose do Formulário Base.
Se eu não fizer isso, o formulário que chama este outro nunca mais fecha... Mas eu posso até liberar o QrImage da memória que dá esse erro


Responder

Gostei + 0

21/05/2004

Cabelo

Vc então usa um MDI né??

tenta fazer um teste em outro projeto, que não seja MDI, veja como dá certo..

eu uso assim aqui e não tenho problemas..


Responder

Gostei + 0

21/05/2004

Nildo

Num uso MDI naum.. Jah tentei pintar em um TBitmap e dar um Draw dele, jah tentei de tudo :cry:


Responder

Gostei + 0

21/05/2004

Cabelo

Car então é o seguinte, vc não precisa dar um action := CAFree, vc pode usar como te passei que o form que chama ele fecha tb, mas da mesma maneira que eu te passei entendeu??

e aí eu tenho certeza que funciona, pq ele libera o form e seus componentes todos da memória, e cria todas as vezes que este form é chamado..

sem mais

Cabelo


Responder

Gostei + 0

21/05/2004

Nildo

Cabelo_uni,

Jah tinha tentado isso, mas acontecia que quando eu fechava o formulário do Preview (que é um frmRptBase, base dos meus relatorios, que é um preview personalizado), o formulário de parametrização não fechava mais (nem clicando no botaozinho ´fechar´ do formulário). Eu tinha feito assim:

Formulário de parametrização, Botão ´VISUALIZAR´
MeuRelatorio := TMeuRelatorio.Create( Self );
// ... Algumas atribuicoes a valores em captions ...
MeuRelatorio.VisualizarRelatorio;
MeuRelatorio.Free;

Formulário TMeuRelatorio
procedure TMeuRelatorio.VisualizarRelatorio;
begin
   if fUsarQuery then
   begin
      qryBase.Active     := True;
      qrVisualizar.Align := alClient;
   end;

   qrVisualizar.BringToFront;
   qrpBase.Preview;
end;


Mas quando eu fecho esse formulário (da visualizacao), o formulário de parametrizacao não fecha mais (nem pelo Close, nem pelo ModalResult). Você sabe o que pode estar ocorrendo?


Responder

Gostei + 0

21/05/2004

Cabelo

tenta assim :

procedure TMeuRelatorio.VisualizarRelatorio;
begin
if fUsarQuery then
begin
qryBase.Active := True;
qrVisualizar.Align := alClient;
end;

qrVisualizar.BringToFront;
qrpBase.Preview;
//dar um close ou free neste momento em qrpbase
end;

Só uma idéia..

Cabelo


Responder

Gostei + 0

21/05/2004

Nildo

Num funcionou. Só pelo fato de eu tirar o

Action := caFree;

o formulário de parametrizacao não fecha mais.
Você quer que eu envie um projetinho bestinha simulando esta situação? Se sim, me passa o e-mail.

Muito obrigado por estar me ajudando, serei eternamente grato. Tenho que entregar isto na segunda feira até o fim da tarde e não tenho nem idéia do que seja isso.


Responder

Gostei + 0

21/05/2004

Cabelo

manda sim :

cabelo.uni@uol.com.br


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar