Page 1 of 1

Campo memo

Posted: Tue Jul 10, 2007 4:39 pm
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

Posted: Tue Jul 10, 2007 5:07 pm
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.

Posted: Tue Jul 10, 2007 7:54 pm
by Frafive
Muchas Gracias amigo funciona perfecto era lo que estaba buscando.

un saludo