Travar teclado de coletor de dados

Discussão em 'Progress 4GL' iniciado por antonioc, Junho 26, 2012.

  1. antonioc

    antonioc Membro Participativo

    Bom dia.

    Tenho uma aplicação em coletor de dados. Preciso travar um determinado campo da tela, para que o usuário apenas possa ler o codigo de barras e não informar via teclado

    Alguém tem alguma solução para isto?


    Obrigado
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Eu desconheco.... mas pode existir alguma forma...

    O que voce poderia fazer seria o seguinte, se for vc mesmo que gere o codigo de barras poderia colocar uma codificacao na etiqueta e só aceitar no campo esses codigos, se não for vc que gere essas etiquetas acho um pouco dificil, pois os coletores / leitores simulam a entrada da dados do teclado, sem nenhuma diferenciação...

    Acho que pode haver outras maneiras mas de imediato só consegui pensar nisso.
  3. antonioc

    antonioc Membro Participativo

    ~Bom dia.

    Infelizmente não posso mexer na codificação, pois o cliente também a usa.

    Obrighado
  4. baltazar

    baltazar Membro Participativo

    Mete o campo como disabled e preenche-e quando fizer a leitura do código de barras.
  5. eriutoncharles

    eriutoncharles Membro Participativo

    Re: Travar teclad o de coletor de dados

    Meu caro, dá pra fazer uma gambiarra, geralmente não é interessante usar destes recursos, mas as vezes é o jeito.

    Então o Raciocínio é no Entry Você vai Setar o Minuto e Segundo que o cara começou a digitar, o no Leave por ex você faz um cálculo Simples e ver se foi digitado ou Lido pelo coletor, uma vez que o Coletor ler de forma muito mais rápida que uma digitação.

    Obs: Como não sei Obter os Milésimos de Segundos, então se o Usuário digitar e finalizar no mesmo segundo não vai funcionar.


    Lá vai a Gambiarra:

    Código:
    DEF VAR vTempo AS CHAR.
    DEF VAR vOldTempo AS CHAR.
    
    
    No Evento Entry do campo:
    Código:
     ASSIGN vOldTempo = SUBSTRING(STRING(TIME,"HH:MM:SS"),5,1) + 
                        SUBSTRING(STRING(TIME,"HH:MM:SS:"),7,2).
    
    No evento Leave por ex:

    Código:
     ASSIGN vTempo = SUBSTRING(STRING(TIME,"HH:MM:SS"),5,1) + 
                       SUBSTRING(STRING(TIME,"HH:MM:SS:"),7,2).
    
             IF DEC(vTempo) - DEC(vOldTempo) > 1 THEN DO: 
                 DISABLE FILL-IN-1 WITH FRAME DEFAULT-FRAME. 
               MESSAGE "Caro Usuário, este Campo é de Uso Obrigatório do Leitor de Código de Barras" VIEW-AS ALERT-BOX.
            /* Ai aqui você zera o campo, volta... ENABLE Campox. APPLY "ENTRY" TO Campox. */
          END.
       ELSE DO:
           /* Prossegue com o Processo */
       END.
    
    
    Outra coisa também é que o leitor tem que está configurado pra jogar o Table ou Enter após a leitura.

    Veja se isso dá pra lhe ajudar ai em alguma coisa.

    Abraços,
    Eriuton Charles
  6. antonioc

    antonioc Membro Participativo

    Muito obrigado pela dica. Estarei testando amanhã após o teste eu retorno. Realmente não tinha pensado nesta lógica.


    Obrigado.

Compartilhe esta Página