Fórum Erro a chamar 2X seguida?? #261890

14/12/2004

0

Estou tendo o seguinte problema quando clico em visualizar pela segunda vez seguida para ver meu relatório esta dando o seguinte erro:

Classe do erro: EComponentError
14/12/04 07:21:25 : Mensagem: A component named TitularDiaQRForm already exists

Alguém sabe como resolver?

Sem mais...


Wgm8

Wgm8

Responder

Posts

14/12/2004

Rodolpho123

Vc criou o form de relatório e não destruiu. Quando vc executa aprimeira vez, vc deve estar criando o form, já na segunda vez, o seu sistema tenta criar um form já existente. Poste aqui o seu código que a galera do clube terá um imenso prazer em lhe ajudá-lo.


Responder

Gostei + 0

14/12/2004

Wgm8

A clicar no botãovisualizar faço o seguinte

begin
PreparoRelatorio;
FormQR.Preview;
UnPreparoRelatorio;
end;


PreparoRelatorio:
begin
if FormQR = Nil then
Application.CreateForm(TFormQR, FormQR) ;
//Monto a SQL
SqlQ.SQL.Clear;
SqlQ.SQL.Add(´Select * from TABELADADOS´);
SqlQ.CmdQ.Open;
end;

UnPreparoRelatorio:
begin
SqlQ.Close;
SqlQ.Free;
FormQR := NIL;
end;


Responder

Gostei + 0

14/12/2004

Vinicius2k

Colega,

O problema :
UnPreparoRelatorio:
begin
  SqlQ.Close;
  SqlQ.Free;
  FormQR := NIL; // aqui vc só nulou o ponteiro do form, não destruiu.
end;

Tente desta forma :
...
begin
  SqlQ.Close;
  SqlQ.Free;
  FormQR.Free;  // destruí o objeto
  FormQR := nil; // nulei o ponteiro
end;

ou desta forma :
...
begin
  SqlQ.Close;
  SqlQ.Free;
  FreeAndNil(FormQR); // destruí o objeto e nulei usando uma função do Delphi
end;


Espero ter ajudado...
T+


Responder

Gostei + 0

14/12/2004

Otto

creio que o FreeAndNil() funciona apatir do delphi 7...

caso isso seja verdade e vc use uma versão anterior a procedure segue abaixo...


procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;



Responder

Gostei + 0

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

Aceitar