Controle editor

Discussão em 'Progress 4GL' iniciado por lima, Julho 15, 2010.

  1. lima

    lima Membro Participativo

    Boa noite pessoal,

    preciso implementar um determinado controle em um editor na tela. Preciso controlar que o usuário digite apenas 30 caracteres por linha e no máximo 10 linhas. Alguém já implementou algo parecido?

    Muito obrigado.
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Cara eu não sei se isso é possivel, mas uma outra idéia, meio que uma gambiarra, seria você colocar isso em Fill-in,,, ficaria um pouco tosco, mas daria para controlar da forma que você quer.
  3. baltazar

    baltazar Membro Participativo

    Bom dia,

    segue exemplo do código que pretende.

    Código:
    /*
        -----------
        OBSERVACOES
        -----------
        */  
    
        /*
        ------------------------------------
        CALCULA O Nº DE CARACTERES POR LINHA
        ------------------------------------
        */
    
        run hx_s0012.p(txtobservacoes:screen-value,output textobs).
    
        linhas      = "".
        excessop    = "".
        resultado   = "".
    
        excesso1    = 0.
    
        
        do i = 1 to num-entries(textobs,"|"):
            
            if length(entry(i,textobs,"|")) > 77 then do:
    
                if linhas = "" then do:
    
                    linhas = string(i).
    
                    excesso1 = length(entry(i,textobs,"|")) - 77.
                    excessop = string(excesso1).
    
                    resultado = "Linha " + string(i) + " tem " + string(excessop) +
                                " caracter(es) a mais".
    
                    excesso1 = 0.
            
                end.
                else do:
    
                    linhas = linhas + "," + string(i).
    
                    excesso1 = length(entry(i,textobs,"|")) - 77.
                    excessop =  string(excesso1).
    
                    resultado = resultado + "~n" + "Linha " + string(i) + " tem " + string(excessop) 
                                + " caracter(es) a mais".
    
                    excesso1 = 0.
                                   
                end.
                
            end.
    
        end.
    
        if linhas <> "" then do:
    
            message string(resultado) view-as alert-box error title "Erro".
            
            apply "entry":U to txtobservacoes.
            return no-apply.
    
        end.
        
        /*
        ----------------------
        CALCULA O Nº DE LINHAS
        ----------------------
        */
    
        excesso = 0.
        
        if num-entries(textobs,"|") > 25 then do:
            
            excesso = num-entries(textobs,"|") - 25.
    
            message "Introduziu " + string(excesso) + " linhas(s) a mais."
                    view-as alert-box error title "Erro".
    
            apply "entry":U to txtobservacoes.
            return no-apply.
            
        end.
    
    O hx_s0012.p

    Código:
    /*
                                    PARAMETROS DE ENTRADA
    -------------------------------------------------------------------
    01 i-texto                      TEXTO A CONVERTER
    -------------------------------------------------------------------
    */
    
    def input param i-texto         as char                     no-undo.
    
    /*
                                    PARAMETROS DE SAIDA
    -------------------------------------------------------------------
    01 o-texto                      TEXTO CONVERTIDO
    -------------------------------------------------------------------
    */
    
    def output param o-lista        as char                     no-undo.
    
    /*
                                    VARIAVEIS LOCAIS
    -------------------------------------------------------------------
    w-length                        COMPRIMENTO DE i-texto
    c-texto                         CONTAGEM DE POSICOES DE i-texto
    -------------------------------------------------------------------
    */
    
    def var w-length                as int                      no-undo.
    def var c-texto                 as int                      no-undo.
    
    w-length    = length(i-texto).
    if w-length = 0 then return.
    
    do c-texto = 1 to w-length:
    
        if substr(i-texto,c-texto,1) <> chr(10) then o-lista = o-lista + substr(i-texto,c-texto,1).
        
        else do:
            if c-texto <> w-length then o-lista = o-lista + "|".
        end.
        
    end.
    
  4. jalegria

    jalegria Membro Participativo

    Bom dia

    Essa restrição se dá no momento da digitação.
    Ou o usuário pode digitar o que quiser e depois vc valida se esta no formato correto?
  5. baltazar

    baltazar Membro Participativo

    A validação é feita no momento em que o utilizador "Gravar" (neste caso um Orçamento)
  6. jalegria

    jalegria Membro Participativo

    Saudações

    Faz um teste com o código abaixo e vê se te ajuda em algo...

    Código:
    def var i as int.
    def var lin as char format 'X(30)' extent 10.
    
    session:data-entry-return = true.
    update lin at 25 no-labels auto-return with 1 col size 80 by 12.
    
    repeat i = 1 to 10 with frame f-result overlay row 3 centered:
      disp string(i,'99') lin[i] format 'X(30)'.
    end.
    

Compartilhe esta Página