Campo memo

Post Reply
Frafive
Posts: 189
Joined: Wed Apr 05, 2006 9:48 pm

Campo memo

Post by Frafive »

Hola amigos

Existe alguna forma de limitar el número de caracteres en un Get en un campo del tipo memo ?


El get esta creado como Memo , no le puedo poner un picture.


un saludo
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Post by antolin »

Tengo hecho lo siguiente y no me va mal, aunque tiene sus limitaciones. He modificado la clase TMultiGet de la siguiente forma:

1º He añadidio tres datas:
DATA MaxLong AS NUMERIC INIT 0
DATA nChars AS NUMERIC INIT 0
DATA bPassMax

2º He modificado el METHOD KeyChar:
Añadiendo, despues de las líneas: if nKey == VK_TAB ... endif, lo siguiente:

IF ::MaxLong > 0 .AND. nKey > 31 .AND. LEN( ::cText ) >= ::MaxLong
++::nChars
MsgBeep()
IF ::nChars = 4
IF ::bPassMax # NIL
EVAL(::bPassMax,::MaxLong)
ELSE
MSGSTOP( "ESTE CAMPO NO ADMITE MÁS DE "+ALLTRIM(STR(::MaxLong))+" CARACTERES", ;
" SE INTENTÓ EXCEDER LONGITUD MÁXIMA" )
ENDIF
::nChars := 2
ENDIF
RETURN 0
ENDIF
::nChars := 0

Si te fijas, tan sólo es necesario el DATA MaxLong, los demás son accesorios. nChar es para que el mensaje sólo salga una vez de cada dos, después del cuarto intento y no esté dando la lata a cada instante. En cuanto a bPassMax, es para poder ejecutar una accion alternativa al MSGSTOP.

Pruebalo a ver si te sirve.

Saludos.
Frafive
Posts: 189
Joined: Wed Apr 05, 2006 9:48 pm

Post by Frafive »

Muchas Gracias amigo funciona perfecto era lo que estaba buscando.

un saludo
Post Reply