Erro a chamar 2X seguida??
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...
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
Curtidas 0
Respostas
Rodolpho123
14/12/2004
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.
GOSTEI 0
Wgm8
14/12/2004
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;
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;
GOSTEI 0
Vinicius2k
14/12/2004
Colega,
O problema :
Tente desta forma :
ou desta forma :
Espero ter ajudado...
T+
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+
GOSTEI 0
Otto
14/12/2004
creio que o FreeAndNil() funciona apatir do delphi 7...
caso isso seja verdade e vc use uma versão anterior a procedure segue abaixo...
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;
GOSTEI 0