Como sair do campo automaticamente?

Discussão em 'Progress 4GL' iniciado por leocir, Fevereiro 17, 2010.

  1. leocir

    leocir Sem Pontuação

    Em um programa meu, ao pressionar a tecla 'enter' eu saio do campo.
    Gostaria que quando o campo fosse preenchido com uma quantidade de caracteres,
    saísse do campo automaticamente.

    Estou utilizando choose para selecionar(navegar) o campo. Quando o usuário pressiona 'enter', o
    mesmo passa a ser editavel.
    Já tentei fazer da seguinte forma:
    Código:
    if frame-value = 'xxx' then
        update campo auto-return.
    
    mas não funcionou.

    Outra coisa, é possível entrar(editar) no campo sem pressionar a tecla 'enter'?
    por exemplo, pressionando a tecla 'P', ou qualquer outra.
    desde já agradeço.
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Olá,

    Este seu programa é gráfico ou caracter???

    No caso, você poderia fazer um verificação no evento on CHANGE-VALUE do seu campo e utilizar o length(campo:screen-value) para verificar a quantidade já digitada e se preencher ele executa seu comando para mudar de campo.

    []'s
  3. LeandroSantos

    LeandroSantos Membro Participativo


    Não entendi muito bem sua duvida, copie e cole o código no procedure editor e veja se lhe ajuda.
    Código:
    def var n as char format "X(10)" extent 5.
    
    def frame f
        n
        with side-label three-d.
    
    
    on return of frame f anywhere
    do:
        assign n.
        apply "tab" to self.
        return no-apply.
    end.
    
    on value-changed of n
    do:
        if length(self:screen-value) = 10 then
            apply "return" to self.
    end.
    
    enable all with frame f.
    
    wait-for window-close of current-window.
    
  4. Rodrigo Visentainer

    Rodrigo Visentainer Sem Pontuação

    Você pode usar o handle:

    Ex.:

    def var v_wgh_focus
    as widget-handle
    format ">>>>>>9":U
    no-undo.

    IF INPUT FRAME f_adc_03_projeto_contat v_cod_chamado = "" THEN DO:

    MESSAGE "Insira o código do chamado. Este campo não pode estar vazio pois é um campo obrigatório."
    VIEW-AS ALERT-BOX ERROR BUTTONS OK
    TITLE "Validação de dados".
    assign v_wgh_focus = v_cod_chamado:handle.
    RETURN NO-APPLY.
    END.

    Obs.: No caso o v_cod_chamado é o campo onde ele irá dar o focus.
  5. Rodrigo Visentainer

    Rodrigo Visentainer Sem Pontuação

    def var v_wgh_focus
    as widget-handle
    format ">>>>>>9":U
    no-undo


    IF INPUT FRAME f_adc_03_projeto_contat v_cod_chamado = "" THEN DO:

    MESSAGE "Insira o código do chamado. Este campo não pode estar vazio pois é um campo obrigatório."
    VIEW-AS ALERT-BOX ERROR BUTTONS OK
    TITLE "Validação de dados".
    assign v_wgh_focus = v_cod_chamado:handle.
    RETURN NO-APPLY.
    END.

    Nessa minha validação ele vai ir para o campo, você pode fazer quando atingir tantos caracter, ir para o próximo, no caso você coloca o campo que quer no local do "v_cod_chamado".
  6. lwazevedo

    lwazevedo Membro Ativo

    Leocir vou tentar responder conforme eu entendi suas dúvidas e vou colocar em ordem conforme você postou.

    Código:
    &Scoped-define FRAME-NAME DEFAULT-FRAME
    &scoped-define self-name default-frame
    
    1) Em um programa meu, ao pressionar a tecla 'enter' eu saio do campo.
    Gostaria que quando o campo fosse preenchido com uma quantidade de caracteres,
    saísse do campo automaticamente.

    Resposta:
    Código:
    ON VALUE-CHANGED OF campo-1 IN FRAME DEFAULT-FRAME
    DO:
      if length(input campo-1) = 3 then
        apply "tab":u to campo-1.
    
    END.
    

    Estou utilizando choose para selecionar(navegar) o campo. Quando o usuário pressiona 'enter', o
    mesmo passa a ser editavel.

    Resposta:
    Código:
    campo-1:sensitive = no.
    ON "choose" OF  DEFAULT-FRAME  ANYWHERE
    DO:
    campo-1:sensitive = yes.
    apply "entry":U to campo-1
    
    END.
    

    Outra coisa, é possível entrar(editar) no campo sem pressionar a tecla 'enter'?
    por exemplo, pressionando a tecla 'P', ou qualquer outra.
    desde já agradeço.

    Resposta:

    Código:
    
    ON F9 OF FRAME DEFAULT-FRAME ANYWHERE
    DO:
      apply "entry":U to campo-1.
    END.
    &UNDEFINE SELF-NAME
    

    Espero que ajude.
    Última edição: Janeiro 8, 2014

Compartilhe esta Página