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.


/*
-----------
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.
/*
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.



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.

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