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.
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.
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.
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?
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.