Fórum erro ao acessar componente de form em tempo de execucao #274953
31/03/2005
0
Olá, estou usando Application.CreateForm(TForm, Form); Form.ShowModal; Form.Destroy para criar forms em tempo de execuca.
O problema é que tem uma tela de entrada de produtos, e no final tem uma rotina pra transferir as quantidades para o estoque e ta dando erro na hora da transferencia. Acredito eu que seja porque to tentando acessar um IBDataset no formulario do cadastro de produtos e este ainda naum foi criado, ou ja foi destruido. Será que a melhor maneira é deixar todos os DataSets( IBDataset, IBQuery e DataSources) em um DataModule ou tem como resolver isso???
O problema é que tem uma tela de entrada de produtos, e no final tem uma rotina pra transferir as quantidades para o estoque e ta dando erro na hora da transferencia. Acredito eu que seja porque to tentando acessar um IBDataset no formulario do cadastro de produtos e este ainda naum foi criado, ou ja foi destruido. Será que a melhor maneira é deixar todos os DataSets( IBDataset, IBQuery e DataSources) em um DataModule ou tem como resolver isso???
Eduunai
Curtir tópico
+ 0
Responder
Posts
31/03/2005
Domingosafn
Você pode testar se o componente existe:
if FormCadastroProdutos <> nil then
transferir_quantidades
else
Application.CreateForm(FormCadastroProdutos, Form);
Algo assim ...
if FormCadastroProdutos <> nil then
transferir_quantidades
else
Application.CreateForm(FormCadastroProdutos, Form);
Algo assim ...
Responder
Gostei + 0
01/04/2005
Raserafim
com a rotina sugerida por domingosafn vocë pode resolver o seu problema pois caso o form ainda não tenha sido criado (ou já esteja destruido) será criado, mas vc precisa fazer uma alteração neste código para que após ser criado a transferência ocorra:
Mas eduunai, lhe aconselho, por experiência própria e principalmente pelo que rege as boas práticas da programação, coloque os componentes de acesso em um DataModulo. seu código vai ficar bem mais organizado e robusto.
if FormCadastroProdutos <> nil then transferir_quantidades else begin Application.CreateForm(FormCadastroProdutos, Form); transferir_quantidades; end;
Mas eduunai, lhe aconselho, por experiência própria e principalmente pelo que rege as boas práticas da programação, coloque os componentes de acesso em um DataModulo. seu código vai ficar bem mais organizado e robusto.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)