Só para especialistas em Delphi
18/02/2003
0
Eu tiro qualquer relatório varias vezes usando a rotina abaixo e tudo sai normalmente, em uma determinada vez da o erro na linha marcada com seta.
“Access violation at address 0051B815 in module ´MENU.exe´. Read of address 018911DA” ,
ou
“A component named QRStantardPreview already exist.”
Acredito que o componente QRStandardPreview em um determinado momento não é destruído da memória, Mas como destruilo como resolver de outra forma?
Application.CreateForm(TRazaoR_f,RazaoR_f);
RazaoR_f.QRazaoR_f.PreviewModal; <<=====
RazaoR_f.QRazaoR_f.Destroy;
RazaoR_f.QRazaoR_f:=nil;
RazaoR_f:=nil;
Anonymous
Posts
18/02/2003
Anonymous
18/02/2003
Anonymous
18/02/2003
Anonymous
Application.CreateForm(TRazaoR_f, RazaoR_f);
RazaoR_f.QRazaoR_f.PreviewModal;
RazaoR_f.Close; <<<=========
18/02/2003
Anonymous
Acho que e bug do Report
18/02/2003
Anonymous
esse problema acontece qnd vc dá o preview em tempo de projeto,
em run-time nunca aconteceu comigo.
valeu.
18/02/2003
Anonymous
nao vi que vc tinha colocado o pedaco do fonte que dah erro. :)
nesse caso, acho que o problema estah em usar previewmodal,
sempre uso somente preview eh funciona blz.
18/02/2003
Anonymous
if RazaoR_f = nil Then
Application.CreateForm(TRazaoR_f,RazaoR_f)
RazaoR_f.QRazaoR_f.PreviewModal; <<=====
RazaoR_f.QRazaoR_f.Destroy;
RazaoR_f.QRazaoR_f:=nil;
RazaoR_f:=nil;
Valeu
Até mais
18/02/2003
Anonymous
Com previewmodal e só preview.
Esperimente tirar o relatório umas vinte vezes sem sair do sistema.
As vezes comigo dá o erro na terceira vez as vezes dá na enesima.
Obrigado
19/02/2003
Adilsond
begin
with TRazaoR_f.Create(Self) do
try
QRazaoR_f.DataSet.Open; // monto os parametros da query no beforeopen
try
if QRazaoR_f.DataSet.IsEmpty then
raise Exception.Create(´Não existem registros para a opção escolhida.´);
case Value of
True : QRazaoR_f.Preview;
False: QRazaoR_f.Print;
end;
finally
QRazaoR_f.DataSet.Close;
end;
finally
QRazaoR_f.QRPrinter := nil;
QRazaoR_f.Free;
Free;
end;
end;
19/02/2003
Anonymous
procedure QRDestroi;
var
nIdx: Integer;
begin
for nIdx := (Screen.FormCount-1) downto 0 do
with Screen.Forms[nIdx] do
if ClassName = ´TQRStandardPreview´ then
Close;
end;
======================
Faça assim no botão de manda dar o preview:
QrDestroi;
QuickRep1.PreviewModal;
Clique aqui para fazer login e interagir na Comunidade :)