Tratando a demora na consulta do CNPJ/CPF usando componente ACBR

10/12/2015

0

Bom dia

Gostaria da ajuda dos colegas

estou fazendo uma aplicação simples de cadastro de clientes e nela ao digitar um CNPJ/CPF é possível consultar esse CNPJ/CPF com o ACBr, o detalhe é que nem sempre o site da receita ou a internet esta 100% e isso deixa a tela de consulta congelada esperando a resposta para preencher os campos

[img]http://arquivo.devmedia.com.br/forum/imagem/447550-20151210-113859.png[/img]

essa é a tela para consultar o CNPJ/CPF, as vezes o captcha não carrega ou o captcha carrega mais ao clicar no botão consultar a tela congela, quero tratar os dois problemas

segue o código do form de consulta CNPJ/CPF



unit UntConsCNPJ;

interface

uses
PNGImage,
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UntFormModal, ACBrSocket,
ACBrConsultaCNPJ, Vcl.ExtCtrls, Vcl.Mask, Vcl.StdCtrls, ACBrBase,
ACBrEnterTab, System.Actions, Vcl.ActnList, Vcl.Buttons, System.UITypes;

type
TfrmConsCNPJ = class(TFormModal)
Timer1: TTimer;
ACBrConsultaCNPJ1: TACBrConsultaCNPJ;
Panel2: TPanel;
Panel4: TPanel;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
EdtRazaoSocial: TEdit;
EdtEndereco: TEdit;
EdtNumero: TEdit;
EdtComplemento: TEdit;
EdtBairro: TEdit;
EdtCidade: TEdit;
EdtUF: TEdit;
EdtCEP: TEdit;
EdtSituacao: TEdit;
EdtFantasia: TEdit;
Label1: TLabel;
EdtCNPJ: TMaskEdit;
Label14: TLabel;
EdtCaptcha: TEdit;
ButBuscar: TBitBtn;
Image1: TImage;
LabAtualizarCaptcha: TLabel;
procedure LabAtualizarCaptchaClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ButBuscarClick(Sender: TObject);
procedure ACtConfirmaExecute(Sender: TObject);
procedure EdtCNPJKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
var segundos : integer;
public
{ Public declarations }
end;

var
frmConsCNPJ: TfrmConsCNPJ;

implementation

{$R *.dfm}

uses Untfuncoes;

//Yuri

procedure TfrmConsCNPJ.ACtConfirmaExecute(Sender: TObject);
begin
if ((EdtRazaoSocial.Text) = '') then
begin
MessageDlg('Realize a consulta antes de exportar os dados !', mtError, [mbOK],0);
exit;
end
else
if ((EdtSituacao.Text) <> 'ATIVA') then
begin
MessageDlg('Este CNPJ não está ativo na RECEITA FEDERAL !', mtError, [mbOK],0);
exit;
end;


inherited;
ModalResult:= mrOk;
end;

procedure TfrmConsCNPJ.ButBuscarClick(Sender: TObject);
var
I: Integer;
begin
if EdtCaptcha.Text <> '' then
begin
if ACBrConsultaCNPJ1.Consulta(EdtCNPJ.Text, EdtCaptcha.Text) then
begin
EdtRazaoSocial.Text := ACBrConsultaCNPJ1.RazaoSocial;
EdtFantasia.Text := ACBrConsultaCNPJ1.Fantasia;
EdtEndereco.Text := ACBrConsultaCNPJ1.Endereco;
EdtNumero.Text := ACBrConsultaCNPJ1.Numero;
EdtComplemento.Text := ACBrConsultaCNPJ1.Complemento;
EdtBairro.Text := ACBrConsultaCNPJ1.Bairro;
EdtComplemento.Text := ACBrConsultaCNPJ1.Complemento;
EdtCidade.Text := ACBrConsultaCNPJ1.Cidade;
EdtUF.Text := ACBrConsultaCNPJ1.UF;
EdtCEP.Text := ACBrConsultaCNPJ1.CEP;
EdtSituacao.Text := ACBrConsultaCNPJ1.Situacao;


end;
end
else
begin
ShowMessage('É necessário digitar o captcha.');
EdtCaptcha.SetFocus;
end;
inherited;
end;

procedure TfrmConsCNPJ.EdtCNPJKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
campo_numerico(key); // Função que permite apenas números
end;

procedure TfrmConsCNPJ.LabAtualizarCaptchaClick(Sender: TObject);
var
Stream: TMemoryStream;
ImgArq: String;
begin
Stream := TMemoryStream.Create;
try
ACBrConsultaCNPJ1.Captcha(Stream);
ImgArq := ExtractFilePath(ParamStr(0))+PathDelim+'captch.png';
Stream.SaveToFile( ImgArq );
Image1.Picture.LoadFromFile( ImgArq );

EdtCaptcha.Clear;
EdtCaptcha.SetFocus;
finally
Stream.Free;
end;
inherited;
end;

procedure TfrmConsCNPJ.Timer1Timer(Sender: TObject);
begin
inherited;
Timer1.Enabled:= False;
LabAtualizarCaptchaClick(LabAtualizarCaptcha);
EdtCaptcha.SetFocus;
end;

end.
Emanuel Gonçalves

Emanuel Gonçalves

Responder

Posts

10/12/2015

Emanuel Gonçalves

[img]http://arquivo.devmedia.com.br/forum/imagem/447550-20151210-120338.png[/img]

esse é o erro que gostaria de tratar
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar