Campo memo

Campo memo

Postby Frafive » Tue Jul 10, 2007 4:39 pm

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
Frafive
 
Posts: 189
Joined: Wed Apr 05, 2006 9:48 pm

Postby antolin » Tue Jul 10, 2007 5:07 pm

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.
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Postby Frafive » Tue Jul 10, 2007 7:54 pm

Muchas Gracias amigo funciona perfecto era lo que estaba buscando.

un saludo
Frafive
 
Posts: 189
Joined: Wed Apr 05, 2006 9:48 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: FiveWiDi, Google [Bot] and 23 guests