Ir para conteúdo
  • Cadastre-se

DELPHI : ONDE DISPARAR ROTINA DA PESQUISA IBPT


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 2438 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Companheiros

Gostaria de solicitar sua ajuda para a seguinte situação, que está mais relacionada com a construção de uma aplicação Delphi.
Estou tentando fazer uma pequena aplicação que tem por objetivo :
a)-fazer um select distinct dos Estados cadastrados no banco de dados
b)-na sequência pesquisar todos os Códigos de NCM também cadastrados no Banco de Dados
c)-e finalmente, utilizando o componente AcbrIBPTTax , fazer pesquisa no banco de dados  para obter as definições de Tributação Nacional/IMportada/Estadual e Municipal

O problema que estou enfrentando é que estou disparando esta rotina que faz as pesquisas no site do IBPT diretamente nos eventos OnShow ou OnActivate do único formulário da
aplicação.
Desta forma o usuário não poderá fazer qualquer interação com o aplicativo, limitando-se apenas a visualizar o progresso.

Mas, como conseguência disto, embora a aplicação faça a tarefa que lhe está destinada, o formulário fica invisível.
Por outro lado , se eu disparo esta rotina de um botão , mediante um clique do usuário, o processamento da rotina ocorre normalmente.

Por acaso os companheiros tem alguma idéia da causa deste problema?

Terei que disparar esta rotina em outro ponto da aplicação?

Grato

Carlos

Franca-Sp

 

  • Fundadores
  • Solution
Postado

OnShow não é um bom evento para isso...

você poderia inserir um Timer. que no seu evento, desliga a sí próprio, e chama a sua rotina...

Application.ProcessMessages pode ajudar no efeito de tela congelada...

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Consultores
Postado
Em 04/10/2019 at 17:11, carlos_augusto disse:

Terei que disparar esta rotina em outro ponto da aplicação?

Sim.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Senhores

Boa Tarde!

Para resolver o problema eu procedi da seguinte forma :

a)-
const
  WM_STARTUP = WM_USER;

b)-No evento OnShow:  
  // aciono procedure que será executada no lugar do OnShow
  PostMessage(Handle, WM_STARTUP, 0, 0);
  // desabilito evento onshow
  OnShow := nil;

c)-Declaração da Procedure:
    procedure WMStartup(var Msg: TMessage); message WM_STARTUP;
 
d)-
procedure WMStartup(var Msg: TMessage);
begin
  inherited;
  // rotina de pesquisa
end;  

Esta foi a forma que resolvi o problema.

Muito obrigado.

  • Curtir 1
  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora ACBr Pro

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 2438 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...