Página 1 de 1

TMaskEdit:lTrimSpaces (bug?)

Publicado: Lun Dic 05, 2016 4:09 am
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

Re: TMaskEdit:lTrimSpaces (bug?)

Publicado: Lun Dic 05, 2016 10:23 am
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.

Re: TMaskEdit:lTrimSpaces (bug?)

Publicado: Lun Dic 05, 2016 12:06 pm
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.

Re: TMaskEdit:lTrimSpaces (bug?)

Publicado: Mar Dic 06, 2016 3:57 pm
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

Re: TMaskEdit:lTrimSpaces (bug?)

Publicado: Mar Dic 06, 2016 9:27 pm
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

Re: TMaskEdit:lTrimSpaces (bug?)

Publicado: Mar Dic 06, 2016 11:45 pm
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).

Re: TMaskEdit:lTrimSpaces (bug?)

Publicado: Mié Dic 07, 2016 10:50 am
por ignacio
Sorry, but is a not bug, it's really a feature! Thread closed (at least on my side).

Regards,