Clase Tget y su Picture

Post Reply
User avatar
fgondi
Posts: 636
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España
Contact:

Clase Tget y su Picture

Post by fgondi »

En la clase tget me he encontrado el siguiente problema:

Un get definido con un picture '@KE 9,999.999' por ejemplo
Introducimos en él el valor 1200.67453, oGet:cText( 1200.67453), osea un valor con mas decimales de los que se van a mostrar en el picture.

El dato es visualizado correctamente y al volver a obtener el contenido del get, Eval(oGet:bSetGet), muestra 1200.67453

Pero si pasan por el campo sin editar nada, osea se posicionan en el get y pulsan intro sin haber alterado nada, el bsetget cambia y se obtiene 1200.675 (el valor pasado por el transform). Acabo de perder el contenido real del get sin que el usuario haya alterado los datos.

Yo lo he solucionado de esta forma:

Code: Select all

CLASS TGet FROM TControl

   DATA   xPrevio  //... Nuevo.fgondi
   ....
   METHOD SetxPrevio( xText )  //... Nuevo.fgondi
   ...

   METHOD New(...)  CLASS TGet
   ...
   ::SetxPrevio( Eval(::bSetGet) )  //... Nuevo.fgondi
   return Self

   METHOD Redefine(...)  CLASS TGet
   ...
   ::SetxPrevio( Eval(::bSetGet) )  //... Nuevo.fgondi
   return Self

   Method cText( cText ) Class TGet
  ::SetxPrevio( cText )  //... Nuevo.fgondi
  ....

  METHOD lValid() CLASS TGet
  local lRet := .t.
  ::SetxPrevio( Eval(::bSetGet) )  //... Nuevo.fgondi
  ...

  METHOD SetxPrevio( xText )   //... Nuevo.fgondi
  local xCaption
  if ::xPrevio==NIL
    ::xPrevio := xText
    return self
  endif
  if ::cPicture<>nil .and. Valtype(::xPrevio)==Valtype(xText)
    xCaption := Transform( ::xPrevio, ::cPicture )
    if Valtype(xText)='N'
      xCaption := StrTran( xCaption, '.', ''  )
      xCaption := StrTran( xCaption, ',', '.'  )
      xCaption := Val(xCaption)
    endif
    if !::xPrevio==xText .and. xCaption==xText
      ::cText( ::xPrevio )
    else
      ::xPrevio := xText
    endif
  endif
  return self


Un saludo
Fernando González Diez
ALSIS GHE Sistemas Informáticos
Post Reply