Acess Violation - Erro
Bom dia!!!
Alguém me sugere como corrigir o erro de acess violation está dando o erro em duas partes do sistema!!!
1°
2°
Alguém me sugere como corrigir o erro de acess violation está dando o erro em duas partes do sistema!!!
1°
procedure TFrmPrincipal.Button1Click(Sender: TObject); begin FrmCadClientes.ShowModal; end;
2°
//LEVA ESSAS INFORMAÇÕES PARA O FRMCADCLIENTES AONDE INFORMA NO EDIT DA CIDADE FrmCadClientes.EdtCidadeCodigo.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString; FrmCadClientes.EdtCidadeNome.Text:=DbgPesquisaCadCidade.Columns[1].Field.AsString; FrmCadClientes.EdtEstado.Text:=DbgPesquisaCadCidade.Columns[2].Field.AsString; FrmCadClientes.MskCep.Text:=DbgPesquisaCadCidade.Columns[5].Field.AsString;
Bruno Henrique
Curtidas 0
Melhor post
Valquiria Silva
29/08/2015
Bruno, como sugestão eu faria para a tela de cadastro de cidades o mesmo esquema que para a tela de cadastro de clientes e tiraria a referencia dessas tela da tela de pesquisa de cidades, dessa forma vc pode usar pesquisa de cidades em todas as telas que for necessário sem precisar mexer nela, apenas tratando o formulário que chama a nova tela.
Tela de Pesquisa de cidades.
Tela de Cadastro de Cidades botão pesquisar.
e a de clientes ficaria como te falei acima.
Obs: não consigo testar pq não tenho o Delphi 7 Instalado.
Boa sorte
Tela de Pesquisa de cidades.
{ Private declarations }
public
{ Public declarations }
CidadeCodigo: string;
CidadeNome: string;
CidadeEstado: string;
SiglaUfCidade: string;
CidadeCep: string;
CodigoEstadoCidade: string;
CodigoIbgeCidade: string;
end;
var
FrmPesquisaCadCidades: TFrmPesquisaCadCidades;
implementation
{$R *.dfm}
procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeDblClick(Sender: TObject);
begin
Self.ModalResult:= Mrok;
CidadeCodigo := DbgPesquisaCadCidade.Columns[0].Field.AsString;
CidadeNome := DbgPesquisaCadCidade.Columns[1].Field.AsString;
CidadeEstado := DbgPesquisaCadCidade.Columns[2].Field.AsString;
SiglaUfCidade := DbgPesquisaCadCidade.Columns[3].Field.AsString;
CodigoEstadoCidade := DbgPesquisaCadCidade.Columns[4].Field.AsString;
CidadeCep := DbgPesquisaCadCidade.Columns[5].Field.AsString;
CodigoIbgeCidade := DbgPesquisaCadCidade.Columns[6].Field.AsString;
f_operacao := 'A';
FrmPesquisaCadCidades.Close;
end;
procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeKeyPress(Sender: TObject;
var Key: Char);
begin
Self.ModalResult:= Mrok;
CidadeCodigo := DbgPesquisaCadCidade.Columns[0].Field.AsString;
CidadeNome := DbgPesquisaCadCidade.Columns[1].Field.AsString;
CidadeEstado := DbgPesquisaCadCidade.Columns[2].Field.AsString;
SiglaUfCidade := DbgPesquisaCadCidade.Columns[3].Field.AsString;
CodigoEstadoCidade := DbgPesquisaCadCidade.Columns[4].Field.AsString;
CidadeCep := DbgPesquisaCadCidade.Columns[5].Field.AsString;
CodigoIbgeCidade := DbgPesquisaCadCidade.Columns[6].Field.AsString;
f_operacao := 'A';
FrmPesquisaCadCidades.Close;
end;
Tela de Cadastro de Cidades botão pesquisar.
procedure TFrmCadCidades.BtnPesquisarClick(Sender: TObject);
begin
FrmPesquisaCadCidades := TFrmPesquisaCadCidades.Create(Application);
try
FrmPesquisaCadCidades.ShowModal;
BtnExcluir.Enabled := True;
BtnGravar.Enabled := False;
if FrmPesquisaCadCidades.modalresult = mrok then
begin
Self.EdtCodigoCidade.Text:= FrmPesquisaCadCidades.CodigoIbgeCidade;
Self.EdtNomeCidade.Text:=FrmPesquisaCadCidades.CidadeNome;
Self.EdtEstadoCidade.Text:=FrmPesquisaCadCidades.CidadeEstado;
Self.EdtSiglaUfCidade.Text:=FrmPesquisaCadCidades.SiglaUfCidade;
Self.EdtCodigoEstadoCidade.Text:=FrmPesquisaCadCidades.CodigoEstadoCidade;
Self.MskCepCidade.Text:=FrmPesquisaCadCidades.CidadeCep;
Self.EdtCodigoIbgeCidade.Text:=FrmPesquisaCadCidades.CodigoIbgeCidade;
BtnAlterar.Enabled := True
end
else
BtnAlterar.Enabled := False;
finally
freeAndnil(FrmPesquisaCadCidades);
end;
end;
e a de clientes ficaria como te falei acima.
Obs: não consigo testar pq não tenho o Delphi 7 Instalado.
Boa sorte
GOSTEI 1
Mais Respostas
Thiago Santana
25/08/2015
Tenta efetuar a chamada do seu form da seguinte forma:
procedure TFrmPrincipal.Button1Click(Sender: TObject); begin FrmCadClientes:= TFrmCadClientes.Create(Self); FrmCadClientes.ShowModal; FrmCadClientes.Free; end;
GOSTEI 0
Bruno Henrique
25/08/2015
Não deu certo infelizmente. Continua dando o erro!!! O que mais pode tentar
GOSTEI 0
Bruno Henrique
25/08/2015
Ajuda!!!
GOSTEI 0
Bruno Henrique
25/08/2015
Pessoal, boa noite!!!
Descobri o seguinte
Se eu colocar esse código no meu botão ele não ocorre mais o erro de access violation porém o meu clientdataset não atualiza mais meu dbgrid, agora se eu tirar o codigo e deixar meu código assim o meu clientdataset atualiza normal o meu dbgrid, porém ele me retorna o erro de access violation novamente.
Alguém sabe como resolver???
Grato
Descobri o seguinte
Se eu colocar esse código
procedure TFrmPrincipal.Button1Click(Sender: TObject); begin FrmCadClientes := TFrmCadClientes.Create(Application); FrmCadClientes.ShowModal; end;
procedure TFrmPrincipal.Button1Click(Sender: TObject); begin FrmCadClientes := TFrmCadClientes.Create(Application); FrmCadClientes.ShowModal; end;
procedure TFrmPrincipal.Button1Click(Sender: TObject); begin FrmCadClientes.ShowModal; end;
Alguém sabe como resolver???
Grato
GOSTEI 0
Valquiria Silva
25/08/2015
Bruno, o formulário FrmCadClientes está em auto create?
Existe algum código no evento onShow do formulário?
Existe algum código no evento onShow do formulário?
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, boa noite!!!!
Aparentemente era isso mesmo, estava em auto crente, mudei para avaliem... Fiz vários testes e o erro ñ apareceu!!! Pq isso acontece?
Aparentemente era isso mesmo, estava em auto crente, mudei para avaliem... Fiz vários testes e o erro ñ apareceu!!! Pq isso acontece?
GOSTEI 0
Valquiria Silva
25/08/2015
Bruno, bom dia.
O Delphi tem uma configuração Tools/Options/Environment Options/VCL Designer/Auto create forms.
Quando você cria um formulário o delphi olha essa configuração e coloca o Formulário em auto create ou não.
Isso significa que se formulário será criado quando a aplicação for criada. Dê um olhada no arquivo do projeto (.dpr), entre o begin e end, vão aparecer todos os seus formulários que estão em auto create.
O erro Acess Violation, normalmente é por tentar ler/usar/acessar um endereço de memória que não existe.
Aparentemente quando você criava o formulário ele estava criando um novo formulário de clientes e a referencia do seu código :
FrmCadClientes.EdtCidadeCodigo.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
apontava pra um FrmCadClientes não criado.
abs.
O Delphi tem uma configuração Tools/Options/Environment Options/VCL Designer/Auto create forms.
Quando você cria um formulário o delphi olha essa configuração e coloca o Formulário em auto create ou não.
Isso significa que se formulário será criado quando a aplicação for criada. Dê um olhada no arquivo do projeto (.dpr), entre o begin e end, vão aparecer todos os seus formulários que estão em auto create.
O erro Acess Violation, normalmente é por tentar ler/usar/acessar um endereço de memória que não existe.
Aparentemente quando você criava o formulário ele estava criando um novo formulário de clientes e a referencia do seu código :
FrmCadClientes.EdtCidadeCodigo.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
apontava pra um FrmCadClientes não criado.
abs.
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, bom dia!!!
Muito bem explicado.Obrigado pela atenção!!!
Bom dia!!!
Grato
Muito bem explicado.Obrigado pela atenção!!!
Bom dia!!!
Grato
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, boa noite!!!
Agora ocorre outro erro, eu abri outro tópico por que eu não estava conseguindo inserir as imagens nesse mesmo tópico!!!
Tem como você me ajudar
Link do novo tópico
DbGrid
Agora ocorre outro erro, eu abri outro tópico por que eu não estava conseguindo inserir as imagens nesse mesmo tópico!!!
Tem como você me ajudar
Link do novo tópico
DbGrid
GOSTEI 0
Valquiria Silva
25/08/2015
Bruno, vi seu código no tópico https://www.devmedia.com.br/forum/showmodal-zicado-nao-acho-solucao/530014
No formulário de pesquisa você usa:
procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeDblClick(Sender: TObject);
begin
pesquisarcidade := true;
FrmCadCidades.DesabilitarEdit;
FrmCadCidades.EdtCodigoCidade.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadCidades.EdtNomeCidade.Text := DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadCidades.EdtEstadoCidade.Text := DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadCidades.EdtSiglaUfCidade.Text := DbgPesquisaCadCidade.Columns[3].Field.AsString;
FrmCadCidades.EdtCodigoEstadoCidade.Text := DbgPesquisaCadCidade.Columns[4].Field.AsString;
FrmCadCidades.MskCepCidade.Text := DbgPesquisaCadCidade.Columns[5].Field.AsString;
FrmCadCidades.EdtCodigoIbgeCidade.Text := DbgPesquisaCadCidade.Columns[6].Field.AsString;
// LEVA ESSAS INFORMAÇÕES PARA O FRMCADCLIENTES AONDE INFORMA NO EDIT DA CIDADE
FrmCadClientes.EdtCidadeCodigo.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadClientes.EdtCidadeNome.Text := DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadClientes.EdtEstado.Text := DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadClientes.MskCep.Text := DbgPesquisaCadCidade.Columns[5].Field.AsString;
f_operacao := 'A';
FrmPesquisaCadCidades.Close;
end;
Dessa forma você está amarrando essa pesquisa de cidades diretamente ao formulário de Clientes, o que não é uma boa prática, e vai deixar o formulário de pesquisa dependente do formulário de clientes.
Existem várias formas de resolver isso, sugiro que ao invés de mandar as informações para o formulário de clientes, você recupere as informações do formulário de pesquisa.
Um exemplo:
no formulário de pesquisa:
public
{ Public declarations }
CidadeCodigo : string;
CidadeNome : string;
Estado : string;
Cep : string;
end;
var
FrmPesquisaCadCidades: TFrmPesquisaCadCidades;
implementation
uses UCadCidades, UCadClientes, UCadLoteamentos;
{$R *.dfm}
procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeDblClick(Sender: TObject);
begin
pesquisarcidade := true;
FrmCadCidades.DesabilitarEdit;
FrmCadCidades.EdtCodigoCidade.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadCidades.EdtNomeCidade.Text := DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadCidades.EdtEstadoCidade.Text := DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadCidades.EdtSiglaUfCidade.Text := DbgPesquisaCadCidade.Columns[3].Field.AsString;
FrmCadCidades.EdtCodigoEstadoCidade.Text := DbgPesquisaCadCidade.Columns[4].Field.AsString;
FrmCadCidades.MskCepCidade.Text := DbgPesquisaCadCidade.Columns[5].Field.AsString;
FrmCadCidades.EdtCodigoIbgeCidade.Text := DbgPesquisaCadCidade.Columns[6].Field.AsString;
// LEVA ESSAS INFORMAÇÕES PARA O formulario que chamou
CidadeCodigo := DbgPesquisaCadCidade.Columns[0].Field.AsString;
CidadeNome := DbgPesquisaCadCidade.Columns[1].Field.AsString;
Estado := DbgPesquisaCadCidade.Columns[2].Field.AsString;
Cep := DbgPesquisaCadCidade.Columns[5].Field.AsString;
f_operacao := 'A';
FrmPesquisaCadCidades.Close;
end;
na chamada do formulário de clientes.
procedure TFrmCadClientes.EdtCidadeCodigoKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #47 THEN
begin
Application.CreateForm(TFrmPesquisaCadCidades, FrmPesquisaCadCidades);
try
FrmPesquisaCadCidades.ShowModal;
Self.EdtCidadeCodigo.Text:= FrmPesquisaCadCidades.CidadeCodigo;
Self.EdtCidadeNome.Text:= FrmPesquisaCadCidades.CidadeNome;
Self.EdtEstado.Text:= FrmPesquisaCadCidades.Estado;
Self.MskCep.Text:= FrmPesquisaCadCidades.Cep;
finally
freeandNil(FrmPesquisaCadCidades);
end;
end
else
Key := #0;
end;
Mas essa é uma forma aproveitando o código que você já tem. Você pode melhorar.
Abs.
No formulário de pesquisa você usa:
procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeDblClick(Sender: TObject);
begin
pesquisarcidade := true;
FrmCadCidades.DesabilitarEdit;
FrmCadCidades.EdtCodigoCidade.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadCidades.EdtNomeCidade.Text := DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadCidades.EdtEstadoCidade.Text := DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadCidades.EdtSiglaUfCidade.Text := DbgPesquisaCadCidade.Columns[3].Field.AsString;
FrmCadCidades.EdtCodigoEstadoCidade.Text := DbgPesquisaCadCidade.Columns[4].Field.AsString;
FrmCadCidades.MskCepCidade.Text := DbgPesquisaCadCidade.Columns[5].Field.AsString;
FrmCadCidades.EdtCodigoIbgeCidade.Text := DbgPesquisaCadCidade.Columns[6].Field.AsString;
// LEVA ESSAS INFORMAÇÕES PARA O FRMCADCLIENTES AONDE INFORMA NO EDIT DA CIDADE
FrmCadClientes.EdtCidadeCodigo.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadClientes.EdtCidadeNome.Text := DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadClientes.EdtEstado.Text := DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadClientes.MskCep.Text := DbgPesquisaCadCidade.Columns[5].Field.AsString;
f_operacao := 'A';
FrmPesquisaCadCidades.Close;
end;
Dessa forma você está amarrando essa pesquisa de cidades diretamente ao formulário de Clientes, o que não é uma boa prática, e vai deixar o formulário de pesquisa dependente do formulário de clientes.
Existem várias formas de resolver isso, sugiro que ao invés de mandar as informações para o formulário de clientes, você recupere as informações do formulário de pesquisa.
Um exemplo:
no formulário de pesquisa:
public
{ Public declarations }
CidadeCodigo : string;
CidadeNome : string;
Estado : string;
Cep : string;
end;
var
FrmPesquisaCadCidades: TFrmPesquisaCadCidades;
implementation
uses UCadCidades, UCadClientes, UCadLoteamentos;
{$R *.dfm}
procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeDblClick(Sender: TObject);
begin
pesquisarcidade := true;
FrmCadCidades.DesabilitarEdit;
FrmCadCidades.EdtCodigoCidade.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadCidades.EdtNomeCidade.Text := DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadCidades.EdtEstadoCidade.Text := DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadCidades.EdtSiglaUfCidade.Text := DbgPesquisaCadCidade.Columns[3].Field.AsString;
FrmCadCidades.EdtCodigoEstadoCidade.Text := DbgPesquisaCadCidade.Columns[4].Field.AsString;
FrmCadCidades.MskCepCidade.Text := DbgPesquisaCadCidade.Columns[5].Field.AsString;
FrmCadCidades.EdtCodigoIbgeCidade.Text := DbgPesquisaCadCidade.Columns[6].Field.AsString;
// LEVA ESSAS INFORMAÇÕES PARA O formulario que chamou
CidadeCodigo := DbgPesquisaCadCidade.Columns[0].Field.AsString;
CidadeNome := DbgPesquisaCadCidade.Columns[1].Field.AsString;
Estado := DbgPesquisaCadCidade.Columns[2].Field.AsString;
Cep := DbgPesquisaCadCidade.Columns[5].Field.AsString;
f_operacao := 'A';
FrmPesquisaCadCidades.Close;
end;
na chamada do formulário de clientes.
procedure TFrmCadClientes.EdtCidadeCodigoKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #47 THEN
begin
Application.CreateForm(TFrmPesquisaCadCidades, FrmPesquisaCadCidades);
try
FrmPesquisaCadCidades.ShowModal;
Self.EdtCidadeCodigo.Text:= FrmPesquisaCadCidades.CidadeCodigo;
Self.EdtCidadeNome.Text:= FrmPesquisaCadCidades.CidadeNome;
Self.EdtEstado.Text:= FrmPesquisaCadCidades.Estado;
Self.MskCep.Text:= FrmPesquisaCadCidades.Cep;
finally
freeandNil(FrmPesquisaCadCidades);
end;
end
else
Key := #0;
end;
Mas essa é uma forma aproveitando o código que você já tem. Você pode melhorar.
Abs.
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, boa tarde!!!
Snifffffffffffff..... Fiz como você disse, achei uma boa solução, não conhecia esse método!!!
Mais o erro de access violation ainda continua, eu debugo o sistema com F8
e ele começa o access violation aqui
e depois aponta para cá
Snifffffffffffff..... Fiz como você disse, achei uma boa solução, não conhecia esse método!!!
Mais o erro de access violation ainda continua, eu debugo o sistema com F8
e ele começa o access violation aqui
FrmCadCidades.EdtCodigoCidade.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
e depois aponta para cá
Self.EdtCidadeCodigo.Text:= FrmPesquisaCadCidades.CidadeCodigo;
GOSTEI 0
Raimundo Pereira
25/08/2015
Bruno é possivel conseguir o link do sistema zipado ?
Vou estuda-lo e te retorno
Vou estuda-lo e te retorno
GOSTEI 0
Bruno Henrique
25/08/2015
Sim é possível!!! Tem algum lugar que eu posso colocar o link?
GOSTEI 0
Valquiria Silva
25/08/2015
Bruno CadCidades é outro formulário?
Parece que sim, ele não foi criado em nenhum lugar?
Você precisa dele pra que?
Parece que sim, ele não foi criado em nenhum lugar?
Você precisa dele pra que?
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, boa tarde!!!
Sim, é onde eu cadastro as cidades!!!Ai eu apresento as informações no dbgrid que é FrmPesquisaCadCidades, que é o mesmo que eu chamo no evento onkeypress do edit do FrmCadClientes.
Sim, é onde eu cadastro as cidades!!!Ai eu apresento as informações no dbgrid que é FrmPesquisaCadCidades, que é o mesmo que eu chamo no evento onkeypress do edit do FrmCadClientes.
GOSTEI 0
Raimundo Pereira
25/08/2015
https://mega.nz/#fm manda o link para meu email - rcp@outlook.com.br
GOSTEI 0
Bruno Henrique
25/08/2015
Link do código fonte!!! Para me ajudarem
http://www.4shared.com/rar/n3rD6bbiba/Programao.html
GOSTEI 0
Valquiria Silva
25/08/2015
Então vc tem que criar ele em algum lugar. Porque quando você vai chamar
FrmCadCidades.EdtCodigoCidade.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
se vc verificar com o debug selecione o FrmCadCidades e aperte Ctrl+F7 e verá que o valor dele será = nil.
Ou seja ele não foi criado.
Veja em que parte do código fica melhor cria-lo.
att
FrmCadCidades.EdtCodigoCidade.Text := DbgPesquisaCadCidade.Columns[0].Field.AsString;
se vc verificar com o debug selecione o FrmCadCidades e aperte Ctrl+F7 e verá que o valor dele será = nil.
Ou seja ele não foi criado.
Veja em que parte do código fica melhor cria-lo.
att
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, desculpa a ignorância mais qual o melhor lugar que você acha para criar ele? Eu crio como vocês falaram dessa forma???
begin Application.CreateForm(TFrmCadCidades, FrmCadCidades); finally freeandNil(FrmCadCidades); end; end
GOSTEI 0
Valquiria Silva
25/08/2015
Bruno, eu não entendi muito bem para o que vc usa ele.
Mas se você criar da forma como escreveu o erro vai continuar, porque vc está criando e imediatamente destruindo.
Você teria que deixar ele criado pelo que entendi, e depois de usar destruir.
Então chame junto quando vc cria a tela de pesquisa e destrua quando destruir a tela de pesquisa.
Mas se você criar da forma como escreveu o erro vai continuar, porque vc está criando e imediatamente destruindo.
Você teria que deixar ele criado pelo que entendi, e depois de usar destruir.
Então chame junto quando vc cria a tela de pesquisa e destrua quando destruir a tela de pesquisa.
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, boa tarde!!!
Só para ficar bem explicado tirei print dos forms para você compreender!!!
Form - FrmCadCidades
[img:descricao=FrmCadCidades]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-165206.jpg[/img]
[img:descricao=FrmPesquisaCadCidades]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-165649.jpg[/img]
[img:descricao=FrmCadClientes]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-165702.jpg[/img]
Só para ficar bem explicado tirei print dos forms para você compreender!!!
Form - FrmCadCidades
[img:descricao=FrmCadCidades]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-165206.jpg[/img]
[img:descricao=FrmPesquisaCadCidades]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-165649.jpg[/img]
[img:descricao=FrmCadClientes]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-165702.jpg[/img]
GOSTEI 0
Raimundo Pereira
25/08/2015
Bruno ,
A questão é que você usa dois eventos no grid , keypress e dbclick
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-170159.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-170211.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-170220.png[/img]
O erro está ocorrendo no envento keypress porquê você leva os dados para FrmCadClientes sendo que você não criou o form FrmCadClientes
FrmCadClientes.EdtCidadeCodigo.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadClientes.EdtCidadeNome.Text:=DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadClientes.EdtEstado.Text:=DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadClientes.MskCep.Text:=DbgPesquisaCadCidade.Columns[5].Field.AsString;
Correção >>>
pesquisarcidade:=true;
FrmCadCidades.DesabilitarEdit;
FrmCadCidades.EdtCodigoCidade.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadCidades.EdtNomeCidade.Text:=DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadCidades.EdtEstadoCidade.Text:=DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadCidades.EdtSiglaUfCidade.Text:=DbgPesquisaCadCidade.Columns[3].Field.AsString;
FrmCadCidades.EdtCodigoEstadoCidade.Text:=DbgPesquisaCadCidade.Columns[4].Field.AsString;
FrmCadCidades.MskCepCidade.Text:=DbgPesquisaCadCidade.Columns[5].Field.AsString;
FrmCadCidades.EdtCodigoIbgeCidade.Text:=DbgPesquisaCadCidade.Columns[6].Field.AsString;
//LEVA ESSAS INFORMAÇÕES PARA O FRMCADCLIENTES AONDE INFORMA NO EDIT DA CIDADE
//FrmCadClientes.EdtCidadeCodigo.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('CODIGOCIDADE').AsString;
//FrmCadClientes.EdtCidadenOME.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('NOMECIDADE').AsString;
//FrmCadClientes.EdtEstado.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('ESTADOCIDADE').AsString;
//FrmCadClientes.MskCep.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('CEPCIDADE').AsString;
//FrmPesquisaCadCidades := TFrmPesquisaCadCidades.Create(Application);
//try
//FrmCadClientes.ShowModal;
//finally
//FrmCadClientes.Release;
//FrmCadClientes := nil;
//end;
FrmCadClientes := TFrmCadClientes.Create(Application);
FrmCadClientes.EdtCidadeCodigo.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadClientes.EdtCidadeNome.Text:=DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadClientes.EdtEstado.Text:=DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadClientes.MskCep.Text:=DbgPesquisaCadCidade.Columns[5].Field.AsString;
f_operacao:='A';
FrmPesquisaCadCidades.Close;
end;
A questão é que você usa dois eventos no grid , keypress e dbclick
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-170159.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-170211.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-170220.png[/img]
O erro está ocorrendo no envento keypress porquê você leva os dados para FrmCadClientes sendo que você não criou o form FrmCadClientes
FrmCadClientes.EdtCidadeCodigo.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadClientes.EdtCidadeNome.Text:=DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadClientes.EdtEstado.Text:=DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadClientes.MskCep.Text:=DbgPesquisaCadCidade.Columns[5].Field.AsString;
Correção >>>
pesquisarcidade:=true;
FrmCadCidades.DesabilitarEdit;
FrmCadCidades.EdtCodigoCidade.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadCidades.EdtNomeCidade.Text:=DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadCidades.EdtEstadoCidade.Text:=DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadCidades.EdtSiglaUfCidade.Text:=DbgPesquisaCadCidade.Columns[3].Field.AsString;
FrmCadCidades.EdtCodigoEstadoCidade.Text:=DbgPesquisaCadCidade.Columns[4].Field.AsString;
FrmCadCidades.MskCepCidade.Text:=DbgPesquisaCadCidade.Columns[5].Field.AsString;
FrmCadCidades.EdtCodigoIbgeCidade.Text:=DbgPesquisaCadCidade.Columns[6].Field.AsString;
//LEVA ESSAS INFORMAÇÕES PARA O FRMCADCLIENTES AONDE INFORMA NO EDIT DA CIDADE
//FrmCadClientes.EdtCidadeCodigo.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('CODIGOCIDADE').AsString;
//FrmCadClientes.EdtCidadenOME.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('NOMECIDADE').AsString;
//FrmCadClientes.EdtEstado.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('ESTADOCIDADE').AsString;
//FrmCadClientes.MskCep.Text:=FrmPesquisaCadCidades.SQLDataSet1.FieldByName('CEPCIDADE').AsString;
//FrmPesquisaCadCidades := TFrmPesquisaCadCidades.Create(Application);
//try
//FrmCadClientes.ShowModal;
//finally
//FrmCadClientes.Release;
//FrmCadClientes := nil;
//end;
FrmCadClientes := TFrmCadClientes.Create(Application);
FrmCadClientes.EdtCidadeCodigo.Text:=DbgPesquisaCadCidade.Columns[0].Field.AsString;
FrmCadClientes.EdtCidadeNome.Text:=DbgPesquisaCadCidade.Columns[1].Field.AsString;
FrmCadClientes.EdtEstado.Text:=DbgPesquisaCadCidade.Columns[2].Field.AsString;
FrmCadClientes.MskCep.Text:=DbgPesquisaCadCidade.Columns[5].Field.AsString;
f_operacao:='A';
FrmPesquisaCadCidades.Close;
end;
GOSTEI 0
Raimundo Pereira
25/08/2015
Analisando melhor ele vai apresentar o erro em varias rotinas do sistema.
Que só dar para resolver
FrmSEU_FORM := TFrmSEU_FORM.Create(Application);
Pós no Auto Create você só tem o Form_Principal,
Valquiria, você tem alguma indicação ?
Que só dar para resolver
FrmSEU_FORM := TFrmSEU_FORM.Create(Application);
Pós no Auto Create você só tem o Form_Principal,
Valquiria, você tem alguma indicação ?
GOSTEI 0
Valquiria Silva
25/08/2015
vou baixar o fonte, mas não consigo ver hoje.
Posto amanhã.
Posto amanhã.
GOSTEI 0
Bruno Henrique
25/08/2015
Ok... Obrigado a todos pela atenção
GOSTEI 0
Bruno Henrique
25/08/2015
Valquiria, obrigado!!!
A sua solução foi muito boa, quase deu certo, modifiquei algumas partes e deu certo!!! Obrigado!!!
Abcs
Ps.: Obrigado P2 também pela ajuda!!!
A sua solução foi muito boa, quase deu certo, modifiquei algumas partes e deu certo!!! Obrigado!!!
Abcs
Ps.: Obrigado P2 também pela ajuda!!!
GOSTEI 0