Ir para conteúdo
  • Cadastre-se

dev botao

Foco da Aplicação


  • Este tópico foi criado há 4547 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Pessoal,

Estou implementando o TEF via background da V&S Pague.

Percebi que durante a impressão do CDC, mais exatamente entre a primeira e a segunda vias, o sistema vai pra segundo plano, e uma outra aplicação qualquer aberta fica por cima dele. Isso só não acontece quando ele é a unica aplicação aberta.

Podem me ajudar?

Obrigado

Itamar Bermond

Colatina, ES

Link para o comentário
Compartilhar em outros sites

Você programou corretamente o evento OnRestauraFocoAplicacao ?

Daniel,

Estou usando mesmo código do exemplo:

procedure TfrmPrincipal.acbrTEFRestauraFocoAplicacao(var Tratado: Boolean);

begin

  Application.BringToFront;

  Tratado := False;  { Deixa executar o código de Foco do ACBrTEFD }

end;

Testei também trocando o valor de Tratado para True, e a situação piorou: a aplicação passou a ser sobreposta durante o período de espera para passar o cartão.

Itamar Bermond

Colatina, ES

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Tente usar o seguinte:


Uses sndkey32
...

if not Visible then exit ;

Application.BringToFront;

{$IFDEF MSWINDOWS}
AppActivate( PChar( Self.Caption ) ) ;
{$ENDIF}

// Application.ProcessMessages;

Tratado := True ; { Não executa o código de Foco do ACBrTEFD }
[/code]

E adicione a unit e anexo na pasta do seu projeto

sndkey32.zip

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Essa rotina da SndKey32 é ótima para capturar o foco... nunca vi ela falhar...

Acredito que seja algo no Cliente do V&SPague... eu achei o produto deles ainda imaturo, e por isso não levei adiante minha homologação...

Por favor repita o teste usando o projeto TEFDemo

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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Daniel, acho que o problema que o amigo ta passando deve ser paracedido com o que eu tava.

No demo temos a reposta sendo mostrado em um status bar, ele provavelmente como eu, colocou essa msg para ser mostrada em form, assim todo vida que muda de status ele fica criando e apagando o form, dai eu acho que a aplicação perde o foco ficando em segundo plano, mas quando a impressão acaba o foco é retornado.

Só por curiosidade daniel, como vc faz esse tratamento em suas aplicações?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Provavelmente o problema está em alguma mensagem que seria exibida entre as vias e que sua aplicação não está conseguindo exibir.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Daniel, acho que o problema que o amigo ta passando deve ser paracedido com o que eu tava.

No demo temos a reposta sendo mostrado em um status bar, ele provavelmente como eu, colocou essa msg para ser mostrada em form, assim todo vida que muda de status ele fica criando e apagando o form, dai eu acho que a aplicação perde o foco ficando em segundo plano, mas quando a impressão acaba o foco é retornado.

Só por curiosidade daniel, como vc faz esse tratamento em suas aplicações?

Eu exibo as mensagens no mesmo Label que exibe a descrição dos produtos... No Lazarus, há uma propriedade chamada "TLabel.OptimalFill", que é ótima para auto ajustar o tamanho da fonte de acordo com o texto

Quando é um Menu ou entrada de Campo, ai sim, uso um Formulário específico...

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não é necessária essa msg... até porque vc precisará fazer isso a cada inicio de Transação... (veja no Roteiro)

Vc só precisa exibir msg se detectar que o G.P. não responde... e isso já é solicitado pelo ACBrTEFD através dos seus eventos...

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.

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • Membros Pro

Estou com um problema intermitente, ou seja, tem hora que vai tudo certo tem hora que o problema ocorre:

Quando abro minha aplicação e deixo o gerenciador padrão desligado, a aplicação exibe um aviso que o GP não está ativo e irá ativá-lo. Nesse momento ocorre dois problemas:

1 - A aplicação exibe uma mensagem de erro dizendo que o gerenciador não está ativo, ao passo que posso notar que o mesmo está ativo.

2 - A mensagem de erro (Showmessage) perde o foco. Na realidade a aplicação inteira perde o foco.

A princípio achei que era porque eu exibia as mensagens em outro form. Depois passei a exibir no mesmo form (conforme dicas deste post) mas o erro persiste. Já tentei diversas variações no ONRESTAURAFOCO. Coloquei igual ao DEMO, tratado = true, tratado = false, mas nada.

O interessante é que eu só tenho problema de foco na abertura da aplicação. No mais durante as vendas, tudo OK.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Parece ser um problema no seu G.P.... que aparentemente não responde ao comando ATV...

Analise o LOG gerado pelo ACBrTEFD e observe o que ocorre durante a Inicialização

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.

Link para o comentário
Compartilhar em outros sites

  • 8 meses depois ...
  • Fundadores

Nesse caso, isso parece ser um bug do G.P, pois se o mesmo já respondeu para a aplicação com o INTPOS.001, então ele não deveria emitir mensagens....

Se não me engano isso ocorre no Pay&Go... acho que tem um parâmetro que desabilita essa mensagem

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.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Eu estava tendo o mesmo problema de foco. Tive que criar uma procedure à parte para resolver o problema, chamando essa procedure no evento OnRestauraFoco do componente ACBrTEFD.

Segue o código da procedure:


procedure RestauraFoco;

var

  Form: TForm;

  Habilitado: Boolean;

begin

  try

    Form := nil;

    //Verifica se já existe um form ativo na tela.

    if Assigned(Screen.ActiveForm) then

      Form := Screen.ActiveForm

    //Do contrário, pega o último form criado

    else if Assigned(Screen.Forms[Screen.FormCOunt - 1]) then

      Form := Screen.Forms[Screen.FormCOunt - 1];

    if Assigned(Form) then

    begin

      //Verifica o estado da propriedade 'Enabled' do form

      Habilitado := Form.Enabled;

      //Habilita o form para permitir que o foco seja setado para o mesmo

      Form.Enabled := TRUE;

      //Envia o Form em questão para a frente da tela

      SetForeGroundWindow(Form.Handle);

      //Seta o foco da aplicação para o form

      if Form.CanFocus then

        Form.SetFocus;

      Form.Refresh;

      //Retorna a propriedade 'Enabled' para o estado anterior

      Form.Enabled := Habilitado;

    end;

  except

  end;

end;

Obs.: Eu uso a procedure no início do evento OnExibeMsg também, pra garantir que a aplicação terá foco no momento em que a mensagem for exibida.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4547 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.