Fórum SHOWMODAL ZICADO NÃO ACHO SOLUÇÃO #530014

27/08/2015

0

Tenho um edit e coloco no evento onkeypress do edit o seguinte código
  
    If KEY = #47 THEN    
               FrmPesquisaCadCidades := TFrmPesquisaCadCidades.Create(Application);
    try
               FrmPesquisaCadCidades.ShowModal;
    finally
               FrmPesquisaCadCidades.Free;
    end;
               If KEY = #47 THEN
               Key:=#0;
end;
ai ele chama o form que consta as informações em um dbgrid, quando eu dou 2 cliques em cima da linha do dbgrid para trazer as informações para o edit, ele me dá erro de access violation justamente nessa linha do codigo do evento onkeypress
FrmPesquisaCadCidades.ShowModal;
já tentei uma enxurrada de procedimentos mais nenhum com sucesso. Já estou ficando doido, não acho solução
Bruno Henrique

Bruno Henrique

Responder

Posts

27/08/2015

Bruno Henrique

Alguém???
Responder

Gostei + 0

28/08/2015

Bruno Henrique

Sem solução ainda!!! Por favor alguém ajuda???
Responder

Gostei + 0

28/08/2015

Bruno Henrique

Ajuda?
Responder

Gostei + 0

28/08/2015

Raimundo Pereira

Bom dia, Bruno, retire o FrmPesquisaCadCidades do Form auto creat:


If KEY = #47 THEN

Application.CreateForm(tFrmPesquisaCadCidades,FrmPesquisaCadCidades);

try
FrmPesquisaCadCidades.ShowModal;
FrmPesquisaCadCidades.Destroy;


finally
FrmPesquisaCadCidades.Free;
end;
If KEY = #47 THEN
Key:=#0;
end;

Aguardo seu retorno .
Responder

Gostei + 0

28/08/2015

Bruno Henrique

P2, bom dia!!!

Continua com o mesmo erro!!! Agora mostra no .destroy se eu tiro mostra no .showmodal; O que pode fazer?
Responder

Gostei + 0

28/08/2015

Raimundo Pereira

No form que você chama o FrmPesquisaCadCidade

Declare
Uses upesquisacadcidade;

No form FrmPesquisaCadCidade
Declare
Uses Seu form Pai

EXEMPLO
Form1_Vendas
Form2_FrmPesquisaCadCidade
---------------------------------------------------------
No Form1_Vendas
declare
Uses UPesquisaCadCidade
----------------------------------------------------------
---------------------------------------------------------
Form2_FrmPesquisaCadCidade
declare
Uses UVendas;
----------------------------------------------------------

Chamando o FORM-FrmPesquisaCadCidades
if key= vk_f2 then
begin
Application.CreateForm(TFrmPesquisaCadCidades,FrmPesquisaCadCidades);
try
FrmPesquisaCadCidades.ShowModal;
FrmPesquisaCadCidades.Destroy;


finally
FrmPesquisaCadCidades.Free;
end;

end;

Funcionou normalmente. veja a img
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-102910.jpg[/img]
Se não funcionar precisarei coloque seu código:
Responder

Gostei + 0

28/08/2015

Bruno Henrique

P2 o erro dá quando eu clico em cima da linha do dbgrid dou 2 cliques para trazer para o form de clientes

Código do form FrmCadCidades -> aonde eu trago as informações do dbgrid
unit UCadClientes;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Mask, StdCtrls, DateUtils, MaskUtils, Buttons, ExtCtrls, DBXpress, DB, SqlExpr, FMTBcd,
  Provider, DBClient;

type
  TFrmCadClientes = class(TForm)
    Label1: TLabel;
    EdtCodigo: TEdit;
    Label2: TLabel;
    EdtSituacao: TEdit;
    Label45: TLabel;
    Label46: TLabel;
    Label47: TLabel;
    Label48: TLabel;
    Label49: TLabel;
    Label50: TLabel;
    Label51: TLabel;
    Label52: TLabel;
    Label3: TLabel;
    MskDataCadastro: TMaskEdit;
    Label4: TLabel;
    MskUltimaAlteracao: TMaskEdit;
    Label5: TLabel;
    EdtOperadorCodigo: TEdit;
    EdtOperadorNome: TEdit;
    Label6: TLabel;
    EdtNomeRazao: TEdit;
    Label7: TLabel;
    EdtFantasiaApelido: TEdit;
    Label8: TLabel;
    EdtCidadeCodigo: TEdit;
    EdtCidadeNome: TEdit;
    Label9: TLabel;
    EdtEstado: TEdit;
    MskCep: TMaskEdit;
    Label10: TLabel;
    Label11: TLabel;
    EdtEndereco: TEdit;
    Label12: TLabel;
    EdtNumero: TEdit;
    Label13: TLabel;
    EdtBairroCodigo: TEdit;
    EdtBairroNome: TEdit;
    Label14: TLabel;
    EdtComplemento: TEdit;
    Label15: TLabel;
    EdtRg: TEdit;
    Label16: TLabel;
    EdtCnpjCpfCodigo: TEdit;
    Label19: TLabel;
    Label17: TLabel;
    EdtInscricaoEstadual: TEdit;
    Label18: TLabel;
    EdtInscricaoMunicipalProdutor: TEdit;
    Label20: TLabel;
    MskTelefone1: TMaskEdit;
    Label21: TLabel;
    MskTelefone2: TMaskEdit;
    Label22: TLabel;
    Label23: TLabel;
    EdtEmail: TEdit;
    Label24: TLabel;
    EdtContato: TEdit;
    MskCelular: TMaskEdit;
    Panel1: TPanel;
    BtnIncluir: TButton;
    BtnGravar: TButton;
    BtnAlterar: TButton;
    BtnCancelar: TButton;
    BtnPesquisar: TButton;
    BtnSair: TButton;
    SqlDtSCadClientes: TSQLDataSet;
    MskDataNascimento: TMaskEdit;
    MemoObservacoes: TMemo;
    Label25: TLabel;
    MskCnpjCpf: TMaskEdit;
    DspCadClientes: TDataSetProvider;
    CdsCadClientes: TClientDataSet;
    DsCadClientes: TDataSource;
    BtnExcluir: TButton;
    QueryCadClientes: TSQLQuery;
    procedure BtnSairClick(Sender: TObject);
    procedure MskDataCadastroExit(Sender: TObject);
    procedure MskUltimaAlteracaoExit(Sender: TObject);
    procedure MskDataNascimentoExit(Sender: TObject);
    procedure EdtCnpjCpfCodigoExit(Sender: TObject);
    procedure EdtCnpjCpfCodigoKeyPress(Sender: TObject; var Key: Char);
    procedure BtnIncluirClick(Sender: TObject);
    procedure MemoObservacoesKeyPress(Sender: TObject; var Key: Char);
    procedure BtnPesquisarClick(Sender: TObject);
    procedure LimpaCampos;
    procedure DesabilitarEdit;
    procedure DesabilitarMascara;
    procedure DesabilitarMemo;
    procedure HabilitarEdit;
    procedure HabilitarMascara;
    procedure HabilitarMemo;
    procedure BtnCancelarClick(Sender: TObject);
    procedure BtnAlterarClick(Sender: TObject);
    procedure BtnExcluirClick(Sender: TObject);
    procedure BtnGravarClick(Sender: TObject);
    procedure EdtBairroCodigoKeyPress(Sender: TObject; var Key: Char);
    procedure EdtBairroCodigoExit(Sender: TObject);
    procedure EdtCidadeCodigoExit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EdtCidadeCodigoKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmCadClientes: TFrmCadClientes;
  Transacao: TTransactionDesc;
  f_operacao : char;
  pesquisar: Boolean;
  status: String;

implementation

uses UPrincipal, UPesquisaCadClientes, UPesquisaCadLoteamentos,
  UPesquisaCadCidades, UCadCidades;

{$R *.dfm}


//Limpa todos os EDITS do form
procedure TFrmCadClientes.LimpaCampos;
  var i:Integer;
    begin
        for i:=0 To (ComponentCount - 1) do
         If Components[i] Is TCustomEdit Then (Components[i] As TCustomEdit).Clear;
    end;

//Desabilita todos os EDITS do form
procedure TFrmCadClientes.DesabilitarEdit;
  var cont:integer;
    begin
        for cont := 0 To ComponentCount -1 do
          begin
            If Components[cont] Is TEdit Then
              TEdit(Components[Cont]).Enabled :=False;
            end;
    end;

//Desabilita todos as MASCARAS do form
procedure TFrmCadClientes.DesabilitarMascara;
  var cont:integer;
    begin
        for cont := 0 To ComponentCount -1 Do
          begin
            If Components[cont] Is TMaskEdit Then
              TMaskEdit(Components[Cont]).Enabled :=False;
          end;
    end;

//Desabilita todos os MEMOS do form
procedure TFrmCadClientes.DesabilitarMemo;
  var cont:integer;
    begin
        for cont := 0 To ComponentCount -1 Do
          begin
            If Components[cont] Is TMemo Then
              TMemo(Components[Cont]).Enabled :=False;
        end;
    end;

//HABILITA todos os EDITS do form
procedure TFrmCadClientes.HabilitarEdit;
  var cont:integer;
    begin
        for cont := 0 To ComponentCount -1 Do
          begin
            If Components[cont] Is TEdit Then
              TEdit(Components[Cont]).Enabled :=True;
            end;
    end;

//HABILITA todos as MASCARAS do form
procedure TFrmCadClientes.HabilitarMascara;
  var cont:integer;
    begin
        for cont := 0 To ComponentCount -1 Do
          begin
            If Components[cont] Is TMaskEdit Then
            TMaskEdit(Components[Cont]).Enabled :=True;
          end;
    end;

//HABILITA todos os MEMOS do form
procedure TFrmCadClientes.HabilitarMemo;
  var cont:integer;
    begin
        for cont := 0 To ComponentCount -1 Do
          begin
            If Components[cont] Is TMemo Then
            TMemo(Components[Cont]).Enabled :=True;
          end;
    end;



procedure TFrmCadClientes.BtnSairClick(Sender: TObject);
begin
  Close;
end;



procedure TFrmCadClientes.MskDataCadastroExit(Sender: TObject);
begin
  MskDataCadastro.Text := FormatMaskText('99/99/9999;1',MskDataCadastro.text);
end;

procedure TFrmCadClientes.MskUltimaAlteracaoExit(Sender: TObject);
begin
  MskUltimaAlteracao.Text := FormatMaskText('99/99/9999;1',MskUltimaAlteracao.text);
end;

procedure TFrmCadClientes.MskDataNascimentoExit(Sender: TObject);
VAR data : TDate;
begin
    if BtnCancelar.focused then
          exit;
          try
              data := StrToDate(MskDataNascimento.Text);
          except
              begin
                  MessageDlg('Data Incorreta.Verifique!!!',mtInformation,[mbOk],0);
                  MskDataNascimento.SelectAll;
                  MskDataNascimento.SetFocus;
                  Abort;
              end;
          end;
    if StrToDate(MskDataNascimento.Text) > now then
              begin
                  MessageDlg('Data Inserida Maior Que a Data Atual.Verifique!!!',mtInformation,[mbOk],0);
                  MskDataNascimento.SetFocus ;
              end;
  MskDataNascimento.Text := FormatMaskText('99/99/9999;1',MskDataNascimento.text);
end;

procedure TFrmCadClientes.EdtCnpjCpfCodigoExit(Sender: TObject);
begin
  if EdtCnpjCpfCodigo.text = '1' then
        MskCnpjCpf.EditMask:= '000.000.000\-99;1;_'
  else
    if EdtCnpjCpfCodigo.Text = '2' then
        MskCnpjCpf.EditMask:= '000\.000\.000/0000\-99;1;_';
end;

procedure TFrmCadClientes.EdtCnpjCpfCodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
  if EdtCnpjCpfCodigo.text = '1' then
        MskCnpjCpf.EditMask:= '000.000.000\-99;1;_'
  else
  if EdtCnpjCpfCodigo.Text = '2' then
        MskCnpjCpf.EditMask:= '00\.000\.000/0000\-99;1;_';
end;



procedure TFrmCadClientes.BtnIncluirClick(Sender: TObject);
begin
  status:= 'N';
  //Habilita os EDITS, MASCARA, MEMOS ao clicar no botão INCLUIR
  HabilitarEdit;
  HabilitarMascara;
  HabilitarMemo;

  //Coloca o foco no EDITS
  EdtSituacao.SetFocus;

  //Coloca automaticamente as datas atual no form
  MskDataCadastro.Text := DateToStr(Date);
  MskUltimaAlteracao.Text := DateToStr(Date);

  //Habilita os BOTOES ao clicar no botão INCLUIR
  BtnIncluir.Enabled := false;
  BtnGravar.Enabled := true;
  BtnCancelar.Enabled := true;
  BtnPesquisar.Enabled := false;
  BtnSair.Enabled := false;

   //Incrementa automaticamente o EDIT do codigo
      with SqlDtSCadClientes do
        begin
          SqlDtSCadClientes.Close;
          SqlDtSCadClientes.CommandText := 'SELECT MAX(CODIGO)+1 AS COD FROM CADCLIENTES';
          SqlDtSCadClientes.Open;
          EdtCodigo.Text := IntToStr(SqlDtSCadClientes.FieldByName('COD').AsInteger);
        end;
end;

procedure TFrmCadClientes.MemoObservacoesKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
      Key := AnsiUpperCase(Key)[Length(Key)];
end;

procedure TFrmCadClientes.BtnPesquisarClick(Sender: TObject);
begin
  FrmPesquisaCadClientes := TFrmPesquisaCadClientes.Create(Application);
  FrmPesquisaCadClientes.ShowModal;
  BtnExcluir.Enabled:=true;
  BtnGravar.Enabled:=false;
  if pesquisar then
  BtnAlterar.Enabled:=true
  else
  BtnAlterar.Enabled:=false;

end;

procedure TFrmCadClientes.BtnCancelarClick(Sender: TObject);
begin

  //Desabilita todos os EDITS, MASCARAS, MEMOS ao clicar no botão cancelar
  DesabilitarEdit;
  DesabilitarMascara;
  DesabilitarMemo;

  //Desabilita todos os BOTOES ao clicar no botão cancelar
  BtnIncluir.Enabled := true;
  BtnPesquisar.Enabled := true;
  BtnGravar.Enabled := false;
  BtnCancelar.Enabled := false;
  BtnSair.Enabled := true;
  LimpaCampos;
end;

procedure TFrmCadClientes.BtnAlterarClick(Sender: TObject);
begin
  status:= 'E';
  //Pega data atual para colocar na alteração
  MskUltimaAlteracao.Text := DateToStr(Date);

  //Habilita todos os EDITS do form na no clic do botao alterar
  HabilitarEdit;
  HabilitarMascara;
  HabilitarMemo;

  //Habilita todos os BOTOES do form na no clic do botao alterar
  BtnAlterar.Enabled := False;
  BtnIncluir.Enabled := False;
  BtnPesquisar.Enabled := False;
  BtnCancelar.Enabled := True;
  BtnExcluir.Enabled := False;
  BtnGravar.Enabled := True;
  BtnSair.Enabled := False;

  //Coloca o foco na EDIT principal
  EdtSituacao.SetFocus;
end;

procedure TFrmCadClientes.BtnExcluirClick(Sender: TObject);
begin
try
      Transacao.TransactionID := 1;
      Transacao.IsolationLevel := xilREPEATABLEREAD;
      FrmPrincipal.ConexaoBd.StartTransaction(Transacao);
      SqlDtSCadClientes.Close;
      SqlDtSCadClientes.CommandType := ctQuery;
      SqlDtSCadClientes.CommandText := 'delete from CADCLIENTES where CODIGO =:CODIGO';
      SqlDtSCadClientes.ParamByName('CODIGO').AsInteger := StrToInt(EdtCodigo.Text);
      SqlDtSCadClientes.ExecSQL;
      FrmPrincipal.ConexaoBd.Commit(Transacao);
      CdsCadClientes.Close;
      CdsCadClientes.Open;
    except
      on Exc:Exception do
    begin
      ShowMessage('Ocorreu um erro na tentativa de exclusão do registro: ' + Exc.Message);
      FrmPrincipal.ConexaoBd.Rollback(Transacao);
    end;
    end;
    LimpaCampos;
    BtnExcluir.Enabled := False;
end;

procedure TFrmCadClientes.BtnGravarClick(Sender: TObject);
begin
      if status = 'N' then
        begin
          try
            Transacao.TransactionID := 1;
            Transacao.IsolationLevel := xilREPEATABLEREAD;
            FrmPrincipal.ConexaoBd.StartTransaction(Transacao);
            SqlDtSCadClientes.Close;
            SqlDtSCadClientes.CommandType := ctQuery;
            SqlDtSCadClientes.CommandText:='insert into CADCLIENTES(CODIGO, SITUACAO, DATACADASTRO, ULTIMAALTERACAO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'OPERADORCODIGO, OPERADORNOME, NOMERAZAO, FANTASIAAPELIDO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'CIDADECODIGO, CIDADENOME, ESTADO, CEP, ENDERECO, NUMERO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'BAIRROCODIGO, BAIRRONOME, COMPLEMENTO, RG, CNPJCPFCODIGO, CNPJCPF, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'DATANASCIMENTO, INSCRICAOESTADUAL, INSCRICAOMUNICIPALPRODUTOR, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'EMAIL, CONTATO, TELEFONE1, TELEFONE2, CELULAR, OBSERVACOES)';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'values(:CODIGO, :SITUACAO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+':DATACADASTRO, :ULTIMAALTERACAO, :OPERADORCODIGO, :OPERADORNOME, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+':NOMERAZAO, :FANTASIAAPELIDO, :CIDADECODIGO, :CIDADENOME, :ESTADO, :CEP, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+':ENDERECO, :NUMERO, :BAIRROCODIGO, :BAIRRONOME, :COMPLEMENTO, :RG, :CNPJCPFCODIGO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+':CNPJCPF, :DATANASCIMENTO, :INSCRICAOESTADUAL, :INSCRICAOMUNICIPALPRODUTOR, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+':EMAIL, :CONTATO, :TELEFONE1, :TELEFONE2, :CELULAR, :OBSERVACOES)';
            SqlDtSCadClientes.ParamByName('CODIGO').AsInteger := StrToInt(EdtCodigo.Text);
            SqlDtSCadClientes.ParamByName('SITUACAO').AsString := EdtSituacao.Text;
            SqlDtSCadClientes.ParamByName('DATACADASTRO').AsDate := StrToDate(MskDataCadastro.Text);
            SqlDtSCadClientes.ParamByName('ULTIMAALTERACAO').AsDate:= StrToDate(MskUltimaAlteracao.Text);
            SqlDtSCadClientes.ParamByName('OPERADORCODIGO').AsInteger := StrToInt(EdtOperadorCodigo.Text);
            SqlDtSCadClientes.ParamByName('OPERADORNOME').AsString := EdtOperadorNome.Text;
            SqlDtSCadClientes.ParamByName('NOMERAZAO').AsString := EdtNomeRazao.Text;
            SqlDtSCadClientes.ParamByName('FANTASIAAPELIDO').AsString := EdtFantasiaApelido.Text;
            SqlDtSCadClientes.ParamByName('CIDADECODIGO').AsInteger := StrToInt(EdtCidadeCodigo.Text);
            SqlDtSCadClientes.ParamByName('CIDADENOME').AsString := EdtCidadeNome.Text;
            SqlDtSCadClientes.ParamByName('ESTADO').AsString := EdtEstado.Text;
            SqlDtSCadClientes.ParamByName('CEP').AsString := MskCep.Text;
            SqlDtSCadClientes.ParamByName('ENDERECO').AsString := EdtEndereco.Text;
            SqlDtSCadClientes.ParamByName('NUMERO').AsString := EdtNumero.Text;
            SqlDtSCadClientes.ParamByName('BAIRROCODIGO').AsInteger := StrToInt(EdtBairroCodigo.Text);
            SqlDtSCadClientes.ParamByName('BAIRRONOME').AsString := EdtBairroNome.Text;
            SqlDtSCadClientes.ParamByName('COMPLEMENTO').AsString := EdtComplemento.Text;
            SqlDtSCadClientes.ParamByName('RG').AsString := EdtRg.Text;
            SqlDtSCadClientes.ParamByName('CNPJCPFCODIGO').AsInteger := StrToInt(EdtCnpjCpfCodigo.Text);
            SqlDtSCadClientes.ParamByName('CNPJCPF').AsString := MskCnpjCpf.Text;
            SqlDtSCadClientes.ParamByName('DATANASCIMENTO').AsDate := StrToDate(MskDataNascimento.Text);
            SqlDtSCadClientes.ParamByName('INSCRICAOESTADUAL').AsString := EdtInscricaoEstadual.Text;
            SqlDtSCadClientes.ParamByName('INSCRICAOMUNICIPALPRODUTOR').AsString := EdtInscricaoMunicipalProdutor.Text;
            SqlDtSCadClientes.ParamByName('EMAIL').AsString := EdtEmail.Text;
            SqlDtSCadClientes.ParamByName('CONTATO').AsString := EdtContato.Text;
            SqlDtSCadClientes.ParamByName('TELEFONE1').AsString := MskTelefone1.Text;
            SqlDtSCadClientes.ParamByName('TELEFONE2').AsString := MskTelefone2.Text;
            SqlDtSCadClientes.ParamByName('CELULAR').AsString := MskCelular.Text;
            SqlDtSCadClientes.ParamByName('OBSERVACOES').AsMemo := MemoObservacoes.Lines.Text;
            SqlDtSCadClientes.ExecSQL;
            FrmPrincipal.ConexaoBd.Commit(Transacao);
            CdsCadClientes.Close;
            CdsCadClientes.Open;
          except
              on E : Exception do
                  begin
                      ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + E.Message);
                      FrmPrincipal.ConexaoBd.Rollback(Transacao);
                  end;
          end;
                  //Desabilita os EDITS, MASCARAS, MEMOS E LIMPA todos os EDITS após a gravacao
                  DesabilitarEdit;
                  DesabilitarMascara;
                  DesabilitarMemo;
                  LimpaCampos;

                  //Desabilita dos os botoes do form
                  BtnPesquisar.Enabled := true;
                  BtnIncluir.Enabled := true;
                  BtnSair.Enabled := true;
                  BtnAlterar.Enabled:=false;
                  BtnGravar.Enabled:=false;
                  BtnCancelar.Enabled:=false;
        end;
      if status = 'E' then
        begin
          try
            Transacao.TransactionID := 1;
            Transacao.IsolationLevel := xilREPEATABLEREAD;
            FrmPrincipal.ConexaoBd.StartTransaction(Transacao);
            SqlDtSCadClientes.Close;
            SqlDtSCadClientes.CommandType := ctQuery;
            SqlDtSCadClientes.CommandText:='UPDATE CADCLIENTES SET ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'CODIGO=:CODIGO, SITUACAO=:SITUACAO, DATACADASTRO=:DATACADASTRO, ULTIMAALTERACAO=:ULTIMAALTERACAO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'OPERADORCODIGO=:OPERADORCODIGO, OPERADORNOME=:OPERADORNOME, NOMERAZAO=:NOMERAZAO, FANTASIAAPELIDO=:FANTASIAAPELIDO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'CIDADECODIGO=:CIDADECODIGO, CIDADENOME=:CIDADENOME, ESTADO=:ESTADO, CEP=:CEP, ENDERECO=:ENDERECO, NUMERO=:NUMERO, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'BAIRROCODIGO=:BAIRROCODIGO, BAIRRONOME=:BAIRRONOME, COMPLEMENTO=:COMPLEMENTO, RG=:RG, CNPJCPFCODIGO=:CNPJCPFCODIGO, CNPJCPF=:CNPJCPF, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'DATANASCIMENTO=:DATANASCIMENTO, INSCRICAOESTADUAL=:INSCRICAOESTADUAL, INSCRICAOMUNICIPALPRODUTOR=:INSCRICAOMUNICIPALPRODUTOR, ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'EMAIL=:EMAIL, CONTATO=:CONTATO, TELEFONE1=:TELEFONE1, TELEFONE2=:TELEFONE2, CELULAR=:CELULAR, OBSERVACOES=:OBSERVACOES ';
            SqlDtSCadClientes.CommandText:=SqlDtSCadClientes.CommandText+'Where CODIGO=:CODIGO';
            SqlDtSCadClientes.ParamByName('CODIGO').AsInteger := StrToInt(EdtCodigo.Text);
            SqlDtSCadClientes.ParamByName('SITUACAO').AsString := EdtSituacao.Text;
            SqlDtSCadClientes.ParamByName('DATACADASTRO').AsDate := StrToDate(MskDataCadastro.Text);
            SqlDtSCadClientes.ParamByName('ULTIMAALTERACAO').AsDate:= StrToDate(MskUltimaAlteracao.Text);
            SqlDtSCadClientes.ParamByName('OPERADORCODIGO').AsInteger := StrToInt(EdtOperadorCodigo.Text);
            SqlDtSCadClientes.ParamByName('OPERADORNOME').AsString := EdtOperadorNome.Text;
            SqlDtSCadClientes.ParamByName('NOMERAZAO').AsString := EdtNomeRazao.Text;
            SqlDtSCadClientes.ParamByName('FANTASIAAPELIDO').AsString := EdtFantasiaApelido.Text;
            SqlDtSCadClientes.ParamByName('CIDADECODIGO').AsInteger := StrToInt(EdtCidadeCodigo.Text);
            SqlDtSCadClientes.ParamByName('CIDADENOME').AsString := EdtCidadeNome.Text;
            SqlDtSCadClientes.ParamByName('ESTADO').AsString := EdtEstado.Text;
            SqlDtSCadClientes.ParamByName('CEP').AsString := MskCep.Text;
            SqlDtSCadClientes.ParamByName('ENDERECO').AsString := EdtEndereco.Text;
            SqlDtSCadClientes.ParamByName('NUMERO').AsString := EdtNumero.Text;
            SqlDtSCadClientes.ParamByName('BAIRROCODIGO').AsInteger := StrToInt(EdtBairroCodigo.Text);
            SqlDtSCadClientes.ParamByName('BAIRRONOME').AsString := EdtBairroNome.Text;
            SqlDtSCadClientes.ParamByName('COMPLEMENTO').AsString := EdtComplemento.Text;
            SqlDtSCadClientes.ParamByName('RG').AsString := EdtRg.Text;
            SqlDtSCadClientes.ParamByName('CNPJCPFCODIGO').AsInteger := StrToInt(EdtCnpjCpfCodigo.Text);
            SqlDtSCadClientes.ParamByName('CNPJCPF').AsString := MskCnpjCpf.Text;
            SqlDtSCadClientes.ParamByName('DATANASCIMENTO').AsDate := StrToDate(MskDataNascimento.Text);
            SqlDtSCadClientes.ParamByName('INSCRICAOESTADUAL').AsString := EdtInscricaoEstadual.Text;
            SqlDtSCadClientes.ParamByName('INSCRICAOMUNICIPALPRODUTOR').AsString := EdtInscricaoMunicipalProdutor.Text;
            SqlDtSCadClientes.ParamByName('EMAIL').AsString := EdtEmail.Text;
            SqlDtSCadClientes.ParamByName('CONTATO').AsString := EdtContato.Text;
            SqlDtSCadClientes.ParamByName('TELEFONE1').AsString := MskTelefone1.Text;
            SqlDtSCadClientes.ParamByName('TELEFONE2').AsString := MskTelefone2.Text;
            SqlDtSCadClientes.ParamByName('CELULAR').AsString := MskCelular.Text;
            SqlDtSCadClientes.ParamByName('OBSERVACOES').AsMemo := MemoObservacoes.Lines.Text;
            SqlDtSCadClientes.ExecSQL;
            FrmPrincipal.ConexaoBd.Commit(Transacao);
            CdsCadClientes.Close;
            CdsCadClientes.Open;
          except
              on E : Exception do
                  begin
                      ShowMessage('Ocorreu um erro na tentativa de inclusão do registro: ' + E.Message);
                      FrmPrincipal.ConexaoBd.Rollback(Transacao);
                  end;
          end;
                  //Desabilita os EDITS, MASCARAS, MEMOS E LIMPA todos os EDITS após a gravacao
                  DesabilitarEdit;
                  DesabilitarMascara;
                  DesabilitarMemo;
                  LimpaCampos;

                  //Desabilita dos os botoes do form
                  BtnPesquisar.Enabled := true;
                  BtnIncluir.Enabled := true;
                  BtnSair.Enabled := true;
                  BtnAlterar.Enabled:=false;
                  BtnGravar.Enabled:=false;
                  BtnCancelar.Enabled:=false;
        end; 
end;

procedure TFrmCadClientes.EdtBairroCodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
  If KEY = #47 THEN
          FrmPesquisaCadLoteamentos := TFrmPesquisaCadLoteamentos.Create(Application);
          FrmPesquisaCadLoteamentos.ShowModal;
  If KEY = #47 THEN
    Key:=#0;
end;



procedure TFrmCadClientes.EdtBairroCodigoExit(Sender: TObject);
begin
  //PESQUISA Cidades
  if EdtBairroCodigo.Text<>'' then
    begin
      QueryCadClientes.Close;
      QueryCadClientes.SQL.Clear;
      if length(trim(EdtBairroCodigo.Text))<=9
        Then QueryCadClientes.SQL.Add('SELECT * FROM CadLOTEAMENTOS WHERE CODIGOLOTEAMENTO=:CODIGOLOTEAMENTO');



QueryCadClientes.Params.ParamByName('CODIGOLOTEAMENTO').Value:=EdtBairroCodigo.Text;
QueryCadClientes.Open;

      if not QueryCadClientes.IsEmpty then
        begin
         EdtBairroCodigo.Text:=QueryCadClientes.FieldByName('CODIGOLOTEAMENTO').AsString;
         EdtBairroNome.Text:=QueryCadClientes.FieldByName('LOTEAMENTONOME').AsString;
      end
       else
        begin
          MessageDlg('Cidade Não Localizada.Verifique!!!',mtInformation,[mbOk],0);
          EdtBairroCodigo.SetFocus;
        end;
    end;
end;

procedure TFrmCadClientes.EdtCidadeCodigoExit(Sender: TObject);
begin
    //PESQUISA Cidades
    if EdtCidadeCodigo.Text<>'' then
        begin
            QueryCadClientes.Close;
            QueryCadClientes.SQL.Clear;
          if length(trim(EdtCidadeCodigo.Text))<=9 Then
            QueryCadClientes.SQL.Add('SELECT * FROM CADCIDADES WHERE CODIGOCIDADE=:CODIGOCIDADE');
            QueryCadClientes.Params.ParamByName('CODIGOCIDADE').Value:=EdtCidadeCodigo.Text;
            QueryCadClientes.Open;

    if not QueryCadClientes.IsEmpty then
        begin
            EdtCidadeCodigo.Text:=QueryCadClientes.FieldByName('CODIGOCIDADE').AsString;
            EdtCidadeNome.Text:=QueryCadClientes.FieldByName('NOMECIDADE').AsString;
            EdtEstado.Text:=QueryCadClientes.FieldByName('ESTADOCIDADE').AsString;
            MskCep.Text:=QueryCadClientes.FieldByName('CEPCIDADE').AsString;
        end
          else
            begin
                MessageDlg('Cidade Não Localizada.Verifique!!!',mtInformation,[mbOk],0);
                EdtBairroCodigo.SetFocus;
            end;
        end;
end;

procedure TFrmCadClientes.FormCreate(Sender: TObject);
begin
    //Desabilitas os EDITS, MASCARAS, MEMOS do form na hora do show
  DesabilitarEdit;
  DesabilitarMascara;
  DesabilitarMemo;

  //Desabilitas os os BOTOES do form na hora do show
  BtnGravar.Enabled := false;
  BtnAlterar.Enabled := false;
  BtnExcluir.Enabled := false;
  BtnCancelar.Enabled := false;
end;

procedure TFrmCadClientes.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    Action:=caFree;
    FrmCadClientes:= nil;
end;

procedure TFrmCadClientes.EdtCidadeCodigoKeyPress(Sender: TObject;
  var Key: Char);
begin
 If KEY = #47 THEN 

Application.CreateForm(TFrmPesquisaCadCidades,FrmPesquisaCadCidades);
try
FrmPesquisaCadCidades.ShowModal;
FrmPesquisaCadCidades.Destroy;
finally
FrmPesquisaCadCidades.Free;
end;

If KEY = #47 THEN
Key:=#0;

end;

end.




Código do FrmPesquisaCadCidade - é o form que contem as informações no Dbgrid
unit UPesquisaCadCidades;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, ExtCtrls, StdCtrls, FMTBcd, DB, DBClient,
  Provider, SqlExpr;

type
  TFrmPesquisaCadCidades = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    DbgPesquisaCadCidade: TDBGrid;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    EdtPesquisaCodigoCidade: TEdit;
    EdtPesquisaNomeCidade: TEdit;
    Label4: TLabel;
    EdtPesquisaEstadoCidade: TEdit;
    EdtPesquisaCepCidade: TEdit;
    Label5: TLabel;
    SQLDataSet1: TSQLDataSet;
    DataSetProvider1: TDataSetProvider;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    SQLQuery1: TSQLQuery;
    procedure DbgPesquisaCadCidadeDblClick(Sender: TObject);
    procedure DbgPesquisaCadCidadeKeyPress(Sender: TObject; var Key: Char);
    procedure EdtPesquisaCodigoCidadeChange(Sender: TObject);
    procedure EdtPesquisaNomeCidadeChange(Sender: TObject);
    procedure EdtPesquisaEstadoCidadeChange(Sender: TObject);
    procedure EdtPesquisaCepCidadeChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  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 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;

procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeKeyPress(
  Sender: TObject; var Key: Char);
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;

procedure TFrmPesquisaCadCidades.EdtPesquisaCodigoCidadeChange(
  Sender: TObject);
begin
with FrmCadCidades.CdsCadCidades do
begin
Close;
CommandText:='SELECT * FROM CADCIDADES WHERE CODIGOCIDADE LIKE'+ QuotedStr(EdtPesquisaCodigoCidade.Text+'%');
Open;
end;
end;

procedure TFrmPesquisaCadCidades.EdtPesquisaNomeCidadeChange(
  Sender: TObject);
begin
with FrmCadCidades.CdsCadCidades do
begin
Close;
CommandText:='SELECT * FROM CADCIDADES WHERE NOMECIDADE LIKE'+ QuotedStr(EdtPesquisaNomeCidade.Text+'%');
Open;
end;
end;

procedure TFrmPesquisaCadCidades.EdtPesquisaEstadoCidadeChange(
  Sender: TObject);
begin
with FrmCadCidades.CdsCadCidades do
begin
Close;
CommandText:='SELECT * FROM CADCIDADES WHERE ESTADOCIDADE LIKE'+ QuotedStr(EdtPesquisaEstadoCidade.Text+'%');
Open;
end;
end;

procedure TFrmPesquisaCadCidades.EdtPesquisaCepCidadeChange(
  Sender: TObject);
begin
with FrmCadCidades.CdsCadCidades do
begin
Close;
CommandText:='SELECT * FROM CADCIDADES WHERE CEPCIDADE LIKE'+ QuotedStr(EdtPesquisaCepCidade.Text+'%');
Open;
end;
end;

procedure TFrmPesquisaCadCidades.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    //Action:=caFree;
    //FrmPesquisaCadCidades:= nil;
    //FrmPesquisaCadCidades.Release;
end;

end.



[img:descricao=Aonde dá o erro de Access Violation]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-105425.jpg[/img]

[img:descricao=Mensagem do Erro Ao Dar 2 Cliques em Cima da Linha do DbGrid Para Trazer Para O Form FrmCadClientes]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-105516.jpg[/img]

[img:descricao=Continuação do Erro]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-105552.jpg[/img]

[img:descricao=Continuação do Erro]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-105608.jpg[/img]

[img:descricao=Form Que eu Chamo o FrmPesquisaCadCidades]http://arquivo.devmedia.com.br/forum/imagem/316964-20150828-105737.jpg[/img]
Responder

Gostei + 0

28/08/2015

Raimundo Pereira

Bruno,

Debug a aplicação e veja em qual linha está dando erro.

Use o F8 para ir debugando por linha

[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20150828-114449.jpg[/img]
Responder

Gostei + 0

28/08/2015

Bruno Henrique

P2,

Debuguei aqui!!!

Está dando erro no ondbclick da dbgrid nessa parte do código

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;
Responder

Gostei + 0

28/08/2015

Raimundo Pereira

Seu FrmCadClientes está no Auto Create, se não estiver coloque-o e debuge novamente
e veja Da linha 5 a 19 em qual dessas ocorrerá o erro .

No aguardo.
Responder

Gostei + 0

28/08/2015

Bruno Henrique

P2 o erro começa na linha 6 se eu comento ela, e ai o erro vai para linha 7, se eu comento a 7 o erro vai para a linha 8 e assim por diante . O form não está no auto crente.

Acho que ele ñ esta achando os for ms já que ñ esta no auto create
Responder

Gostei + 0

28/08/2015

Raimundo Pereira

use o debuge e veja se vai dar erro e qual a linha

procedure TFrmPesquisaCadCidades.DbgPesquisaCadCidadeDblClick(
Sender: TObject);
begin
Application.CreateForm(TFrmPesquisaCadCidades,FrmPesquisaCadCidades);
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;
Responder

Gostei + 0

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

Aceitar