4Each • Exibir tópico - Controle editor

Controle editor

Forum para duvidas sobre a linguagem Progress

Controle editor

Mensagempor lima em 15 Jul 2010, 20:23

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.
lima
Usuário Junior
Usuário Junior
 
Mensagens: 32
Registro: 17 Fev 2010, 22:41

Re: Controle editor

Mensagempor Rogerio em 15 Jul 2010, 20:46

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.
ROGERIO
Analista de Sistemas
Avatar do usuário
Rogerio
Usuário Analista
Usuário Analista
 
Mensagens: 150
Registro: 28 Jan 2009, 06:02
Localização: Jundiai - SP

Re: Controle editor

Mensagempor baltazar em 16 Jul 2010, 05:05

Bom dia,

segue exemplo do código que pretende.

Código: Selecionar todos
/*
    -----------
    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: Selecionar todos
/*
                                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.
Baltazar
baltazar
Usuário Pleno
Usuário Pleno
 
Mensagens: 82
Registro: 27 Mar 2009, 06:29
Localização: Portugal

Re: Controle editor

Mensagempor jalegria em 16 Jul 2010, 09:05

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?
Não é possível convencer um crente de coisa alguma, pois as suas crenças não se baseiam em evidências, mas sim numa profunda necessidade de acreditar. Carl Sagan
Avatar do usuário
jalegria
Usuário Pleno
Usuário Pleno
 
Mensagens: 57
Registro: 30 Mar 2010, 11:27
Localização: São Paulo / SP

Re: Controle editor

Mensagempor baltazar em 16 Jul 2010, 09:32

A validação é feita no momento em que o utilizador "Gravar" (neste caso um Orçamento)
Baltazar
baltazar
Usuário Pleno
Usuário Pleno
 
Mensagens: 82
Registro: 27 Mar 2009, 06:29
Localização: Portugal

Re: Controle editor

Mensagempor jalegria em 16 Jul 2010, 14:02

Saudações

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

Código: Selecionar todos
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.
Não é possível convencer um crente de coisa alguma, pois as suas crenças não se baseiam em evidências, mas sim numa profunda necessidade de acreditar. Carl Sagan
Avatar do usuário
jalegria
Usuário Pleno
Usuário Pleno
 
Mensagens: 57
Registro: 30 Mar 2010, 11:27
Localização: São Paulo / SP


Voltar para Progress 4GL

Quem está online

Usuários navegando neste fórum: CommonCrawl [Bot] e 0 visitantes