Formato do Campo Hora

Discussão em 'Progress 4GL' iniciado por DFResmer, Fevereiro 22, 2012.

  1. DFResmer

    DFResmer Membro Participativo

    Olá galera!!!
    Eu trabalho com o Progress versão 8.2A, e tenho dificuldades para configurar uma Fill-in como campo hora, eu defini da seguinte forma, ums fill-in como char '99:99', até que funciona, mas caso o usuário não preencha todos os campo, dá mensagens de erro, por exemplo, se o horário é 11:00 e o usuário digitar apenas 11 e teclar enter, vai dar erro que não ter preenchido os campos 00.... ou no caso 07:00 e digitar apenas 7 tbem não dá certo, tem que digitar 0700....
    Queria facilitar para o usuário, que ele digitasse 7 e assumisse 07:00.

    Att,


    Diogo
  2. jdchaves

    jdchaves Membro Participativo

    no leave do fill-in vc verifica o conteudo, e senão tiver nada depois dos ":" vc completa com 0
  3. DFResmer

    DFResmer Membro Participativo

    Poderia me dar um Exemplo?
  4. jdchaves

    jdchaves Membro Participativo

    No LEAVE do fill-in
    Código:
    DEFINE VARIABLE i AS INTEGER     NO-UNDO.
        DEFINE VARIABLE c-hora AS CHARACTER   NO-UNDO.
    
        DO i = 1 TO 5:
            MESSAGE SUBSTRING(FILL-IN-1:SCREEN-VALUE IN FRAME {&FRAME-NAME}, i , 1)
                    VIEW-AS ALERT-BOX INFO BUTTONS OK.
            IF SUBSTRING(FILL-IN-1:SCREEN-VALUE IN FRAME {&FRAME-NAME}, i , 1 ) = ""    THEN DO:
                ASSIGN SUBSTRING(c-hora, i , 1) = "0".
            END.
            ELSE IF SUBSTRING(FILL-IN-1:SCREEN-VALUE IN FRAME {&FRAME-NAME}, i , 1 ) = ":" THEN
                    ASSIGN SUBSTRING(c-hora, i , 1) = ":".
            ELSE
                ASSIGN SUBSTRING(c-hora, i , 1) = SUBSTRING(FILL-IN-1:SCREEN-VALUE IN FRAME {&FRAME-NAME}, i , 1 ).
        END.
        ASSIGN FILL-IN-1:SCREEN-VALUE IN FRAME {&FRAME-NAME} = c-hora.
    
    Só ñ deu tempo pra verificar, mas de inicio parece que da certo.
  5. DFResmer

    DFResmer Membro Participativo

    Legal deu certo,
    Só to quebrando a cabeça se caso acontecer do usuário digitar apenas 7, que seria 07:00, acaba ficando 70:00....
  6. jdchaves

    jdchaves Membro Participativo

    verifica se a primeira posição for maior que 1 e a segunda posição ñ for informado ele vai passar trocar, vai colocar 0 na primeira posição e na segunda com o valor digitado.
    entendeu?

Compartilhe esta Página