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.

TMaskEdit:lTrimSpaces (bug?)

Foro público de Xailer en español
Responder
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

TMaskEdit:lTrimSpaces (bug?)

Mensaje por Hurricane »

El comportamiento esperado, no retire ningún espacio.
Dependiendo del tipo de máscara, la eliminación de este espacio a la derecha:

Código: Seleccionar todo

METHOD FormInitialize( oSender ) CLASS TForm1
   ::oMaskEdit2:lTrimSpaces:=.F.
   ::oMaskEdit3:lTrimSpaces:=.F.

   ::oMaskEdit2:Value   :=Space(11)
   ::oMaskEdit2:cPicture:='@R 999.999.999-99' // BUG
   
   ::oMaskEdit3:Value   :=Space(20)
   ::oMaskEdit3:cPicture:='@!' // correcto

RETURN Nil

METHOD FormKeyUp( oSender, nKey, nFlags ) CLASS TForm1
   ::oLabel2:cText:=Str(Len(::oMaskEdit2:Value))  // BUG / Siempre se debe devolver 11 caracteres
   ::oLabel3:cText:=Str(Len(::oMaskEdit3:Value))  // correcto, siempre devuelve 20 caracteres

RETURN Nil
Esto sólo la eliminación de los espacios de la derecha (mantener los espacios izquierdo), mover el cursor a la mitad de editar y comienza a escribir.
Con otras máscaras que ocurrirá lo mismo problema, ex: '@R !!!.!!!.!!!-!!'

Nota:
En la versión de Xailer Enterprise no contiene el código fuente de esta parte.
Hay otro error que informará más adelante.
Xailer version 4.0.2/MinGw
Adjuntos
TrimSpace.zip
(44.82 KiB) Descargado 155 veces
Última edición por Hurricane el Lun Dic 05, 2016 12:16 pm, editado 2 veces en total.
jvtecheto
Mensajes: 127
Registrado: Jue Dic 19, 2013 1:18 pm

Re: TMaskEdit:lTrimSpaces (bug?)

Mensaje por jvtecheto »

Buenos días Hurricane:

Lo he probado y yo creo que no es un bug.
En el Control TMaskEdit cuando aplicas la mascara :

::oMaskEdit2:cPicture:='@R 999.999.999-99'

Le dices que vas a introducir solo números y inicialmente no hay ningún numero luego la longitud es 0

sin embargo con la mascara:

::oMaskEdit3:cPicture:='@!'

Le dices que esperas solo caracteres y como le has dicho

::oMaskEdit3:value := space(20)

con esto tienes 20 caracteres blancos introducidos luego la longitud es 20 inicialmente.

¿Porque crees que la longitud debería ser 11 sin introducir ningún numero.?

Saludos.

Jose Vte.
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Re: TMaskEdit:lTrimSpaces (bug?)

Mensaje por Hurricane »

Buenos dias Jose,

Perdóname, pero esta equivocado, esta operación no depende máscara, por favor, consulte la documentación (lTrimSpaces).
Esto sólo la eliminación de los espacios de la derecha (mantener los espacios izquierdo), mover el cursor a la mitad de editar y comienza a escribir.
Con otras máscaras que ocurrirá lo mismo problema, '@R !!!.!!!.!!!-!!'

Se espera que el comportamiento y se utiliza, sobre todo los que vienen de la consola (Clipper/Harbour) facilita la consulta en DBF, etc. (DBSeek(oCPF:value))
El tamaño de la cadena debe ser mantenida (teniendo en cuenta la máscara), de lo contrario lTrimSpaces no tiene sentido.
Cassiano de Oliveira
Mensajes: 475
Registrado: Mar Jul 24, 2012 10:21 pm

Re: TMaskEdit:lTrimSpaces (bug?)

Mensaje por Cassiano de Oliveira »

Concordo com ambas explicações, mas a forma q o Eric (Hurricane) explicou, no meu ponto de vista, fica mais transparente pra quem esta migrando.

[]'s
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: TMaskEdit:lTrimSpaces (bug?)

Mensaje por ignacio »

Buenos días,

Xailer desde el inicio de los tiempos. es decir, desde la versión 1.0 NO HA RESPETADO la característica de Clipper de poner tantos espacios por la derecha como longitud tenga el campo en la tabla a la hora de editarlo. Nunca ha sido así, y lo siento, pero nunca lo será. Entendemos que es absolutamente inconsistente con la manera que Windows edita con sus controles. No obstante, la propiedad lTrimSpaces lo que hace es además quitarlos en el caso de que el usuario se le haya ocurrido ponerlos. Si necesita rellenar las cadenas con espacios le sugiero que le eche un vistazo a la función Padr()

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
Hurricane
Mensajes: 262
Registrado: Mar Mar 24, 2015 10:21 am
Ubicación: Brasil
Contactar:

Re: TMaskEdit:lTrimSpaces (bug?)

Mensaje por Hurricane »

Sorry, but lTrimSpaces is inconsistent with the purpose described in the documentation and what is expected. It's just basic logic and no comparison with Clipper, Windows controls or anything else.

It is a bug, if you created this property and set it to FALSE, it is because you do not want it to remove the spaces, but you still remove spaces (the right) depending on the mask, this has no logic (so why does this property exist ?). There is another worse bug (lTrimSpaces FALSE), which blocks Maskedit editing.

Ignacio, please, think better. If lTrimSpaces involves a high complexity similar to getsys, fivewin, hwgui, etc, then I can give a good tip, the adjustment is very useful, never a fad. I promise not to ask for anything else (this year :D)
But if you do not want to adjust, we can not insist, it will be a great disappointment. So please provide us with the complete MaskEdit source code.

Note:
For some it seems banal, but by using mask, it is not simply using PADR (oMsk:value, nSize), is not efficient and involves high complexity. My function is efficient for this form of use: varGet(oMsk, nSize).
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: TMaskEdit:lTrimSpaces (bug?)

Mensaje por ignacio »

Sorry, but is a not bug, it's really a feature! Thread closed (at least on my side).

Regards,
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder