In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Problema con nMaxlength

Foro de Xailer profesional en español
Responder
martindelangel
Mensajes: 47
Registrado: Jue Mar 21, 2013 11:26 pm

Problema con nMaxlength

Mensaje por martindelangel »

En la Versión 3.1 y 3.2
La Propiedad nMaxlength no funciona con TDBEdit y TDBMaskEdit
si por ejemplo le pongo nMaxlength:=3 a un control, puedo escribir la cantidad de caracteres que desee sin que detenga.
pero si en el evento Create del Control hago esto , si funciona:
oSender:cPicture:=REPL('X',3)
De esta manera la captura no pasa de los 3 carateres.
Por el contrario con el Control TDBMemo si funciona.
Algún Bug de Harbour ?
Saludos....
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problema con nMaxlength

Mensaje por ignacio »

martindelangel escribió el mié, 05 febrero 2014 22:16En la Versión 3.1 y 3.2
La Propiedad nMaxlength no funciona con TDBEdit y TDBMaskEdit
si por ejemplo le pongo nMaxlength:=3 a un control, puedo escribir la cantidad de caracteres que desee sin que detenga.
pero si en el evento Create del Control hago esto , si funciona:
oSender:cPicture:=REPL('X',3)
De esta manera la captura no pasa de los 3 carateres.
Por el contrario con el Control TDBMemo si funciona.
Algún Bug de Harbour ?
Saludos....
Los controles tipo TDbEdit y TDBMaksEdit establecen su propiedad nMaxLength automáticamente al valor nLen del objeto TDataField que se enlazan. Hay tres formas de evitar este comportamiento (por orden de preferencia):
1) Utilizar la propiedad cPicture del control
2) Modificar la propiedad TDataField:nLen
3) Modificar el tamaño del campo en la base de datos
Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
martindelangel
Mensajes: 47
Registrado: Jue Mar 21, 2013 11:26 pm

Problema con nMaxlength

Mensaje por martindelangel »

Hola Ignacio:
La unica propiedad del DataControl que hace que se detenga la captura es cPicture.
nLen no funciona.
te platico lo que pasa:
Tengo una Tabla de MySQL , una columna con Varchar(3)
Campo: ::oPAISORIGEN
si pongo un MsgInfo(::oPAISORIGEN:nLen) me muestra 9
Porque ?
La longitud del campo es Varchar(3)
No deberia la propiedad nLen ó nSqlLen ser de 3 ?
Marca 9 y efectivamente la captura se detiene al noveno caracter.
Ahora si hago lo que dices :

::oPAISORIGEN:oDataField:nLen:=3
La captura no se detiene al tercer caracter.
Solo si hago esto en el evento Create del Control
oSender:cPicture:=REPL('X',3) , Si Funciona , se detiene al tercer caracter.
seria ideal que la propiedad nMaxLength funcionara y asi evitar
crear mas codigo para limitar la longitud de la captura.
Por otro lado es impractico Delimitar la captura con la propiedad cPicture.
Saludos...
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problema con nMaxlength

Mensaje por ignacio »

Hola,
Será mejor que mandes un proyecto de ejemplo.
Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder