MODIFICAR UN GET NUMERICO (solucionado)

User avatar
Maggiro
Posts: 76
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU
Contact:

MODIFICAR UN GET NUMERICO (solucionado)

Post by Maggiro »

Buenas tardes Amigos del Foro :
- Comportamiento Con el viejo Clipper,
Tengo un campo GET ya escrito con el numero 1.000
Cuando regreso al campo para modificar su contenido, y como primera tecla pulso el punto decimal,
Clipper elimina el entero, poniendo el cursor en el primer decimal, el numero va apareciendo 0.000.
- Comportamiento Visual FWH
FWH no elimina el entero, poniendo el cursor en el primer decimal, el numero va apareciendo 1.000.
- El picture es '9999.999'
- La pregunta:
Puedo emular el comportamiento de Clipper para éste caso específico??

Otrosi:
He estado probando modificar el numero pulsando flecha derecha, luego un cero mas el punto decimal,
el GET no modifica, sigue precisando 1.000 y lo que pulsé no lo tomó en cuenta.
En otro modo, si al volver al campo, lo primero que pulso es el cero, si modifica el GET

Muchas Gracias por Vuestras respuestas !!!

Julio César Gómez Cortéz
Godryc Experiencias
Lima Perú
Last edited by Maggiro on Tue Sep 29, 2015 2:45 pm, edited 1 time in total.
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by joseluisysturiz »

Saludos, yo lo uso de esta manera y me funciona perfectamente al colocar el punto (.) asume que va entrar decimales, intenta asi y comenta, gracias... :shock:

Code: Select all

PICTURE "@E 999,999.99"
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Maggiro
Posts: 76
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by Maggiro »

Saludos joseluisysturiz :
No hay problema en el Picture, tanto el mio como el tuyo van directo al punto decimal cuando se pulsa.
Necesito encontrar la forma que FWH, cuando pulse un punto, entienda CERO mas PUNTO.
y creo que he visto el código a modificar en el TGET.PRG
si lo aplico, te comento.
Un Abrazo
Julio César Gómez Cortéz
Godryc Experiencias
Lima Perú
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by joseluisysturiz »

Maggiro wrote:Saludos joseluisysturiz :
No hay problema en el Picture, tanto el mio como el tuyo van directo al punto decimal cuando se pulsa.
Necesito encontrar la forma que FWH, cuando pulse un punto, entienda CERO mas PUNTO.
y creo que he visto el código a modificar en el TGET.PRG
si lo aplico, te comento.
Un Abrazo
Julio César Gómez Cortéz
Godryc Experiencias
Lima Perú
Te respondo que a mi me funciona como dices, al colocar el punto, se asume de forma automatica q es decimal y se coloca el cero del lado izquierdo y da paso a que coloque la cantidad decimal, nose si ese es tu problema q no te lo hace, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Maggiro
Posts: 76
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by Maggiro »

Asi es, amigo joseluisysturiz :
No encuentro la razon aun ...
Probé la máscara con el Picture que me indicaste.
- Al pasar por primera vez por el GET, escribi la cantidad 1.000
- Regresé a modificarlo para poner la cantidad 0.075
- cuando regreso, el cursor se posiciona al inicio del GET
- alli es cuando pulso el punto decimal
- y lo que hace el GET solo es correr el cursor al punto decimal, no borra el entero.
Qué podría estar pasando?
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

Re: MODIFICAR UN GET NUMERICO

Post by VitalJavier »

Hola buen dia
También a mi me sucede, para poner en un campo get
una cantidad de solo decimal tengo que teclear "0."

Con la mascara que nos dice JoseLuis tampoco me funciona

Saludos.
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by joseluisysturiz »

VitalJavier wrote:Hola buen dia
También a mi me sucede, para poner en un campo get
una cantidad de solo decimal tengo que teclear "0."

Con la mascara que nos dice JoseLuis tampoco me funciona

Saludos.
Estan inicializando la Var en cero.? nVar := 0, asi inicializo mis VAR numericas y hasta ahora me trabaja todo como uds quieren, saludos... :shock:

Code: Select all

   REDEFINE GET aGet[6] VAR aVar[6] ID 4010 OF oDlg PICTURE "@E 999,999.99"
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Maggiro
Posts: 76
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by Maggiro »

joseluisysturiz :
las variables numericas siempre inicializan en cero al invocar el dialogo con GET
Recuerda que el comportamiento GET sucede al intentar modificar el valor que se le asignó
anteriormente, es decir, cuando la variable ya posee un valor.

Creo que el comportamiento puede solucionarse por aquí ...

METHOD KeyChar( nKey, nFlags ) CLASS TGet
case nKey >= 32 .and. nKey < 256
if ::oGet:Type == "N" .and. ( Chr( nKey ) == "." .or. Chr( nKey ) == "," )
if ::oGet:Clear()
#ifndef __XHARBOUR__
::oGet:DelEnd()
#endif
endif
::oGet:ToDecPos()

Parece que la orden en el método keychar indica que,
al pulsar un punto o una coma,
si la variable tiene un valor,
corra directamente el cursor hacia el decimal a la derecha del punto.

Lo que buscamos es que

cuando entramos a modificar el campo GET numerico con un valor ya asignado

y el cursor dentro del GET se encuentre al inicio del campo
if ::oGet:nPos:=1

Si pulsamos en ese momento el punto decimal

queremos que el método borre el valor previo de nuestra variable
le asigne un valor CERO mas PUNTO DECIMAL a la variable
y que el usuario continue modificando su variable en la parte decimal que desea escribir.

Dando vueltas
Mañana podré hacer una revision al código para enlazar un procedimiento
que capture ese momento y pueda modificar su comportamiento.
Salgo a trabajar ahora.
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: MODIFICAR UN GET NUMERICO

Post by FranciscoA »

VitalJavier wrote:Hola buen dia
También a mi me sucede, para poner en un campo get
una cantidad de solo decimal tengo que teclear "0."

Con la mascara que nos dice JoseLuis tampoco me funciona

Saludos.
Igual comportamiento tengo en mis programas:
1- Si el get tiene valor cero, no hay problemas.
2- Si ya tenía valor y tecleamos el ".", no borra el entero, tenemos que teclear "0."
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
fgondi
Posts: 636
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by fgondi »

Hola Julio Cesar,

Incluye la "k" en el picture.

Code: Select all

"@KE 999,999.99"
De esta forma, al pulsar la primer tecla, lo primero que hace es borrar el contenido del campo.
y por tanto si la primero tecla es el signo de separación decimal, aparecerá "0,"
Un saludo
Fernando González Diez
ALSIS GHE Sistemas Informáticos
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

Re: MODIFICAR UN GET NUMERICO

Post by VitalJavier »

Fernando, buen dia

Pues ya lo probe como nos indicas "@KE 99,999.999" y nada
sigue igual.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: MODIFICAR UN GET NUMERICO

Post by karinha »

Mira si ayuda:

Code: Select all

// -----------------------------------------------------------------------
// Funci¢n ...: PictPts
// Descripci¢n: Cadena Picture para un GET.
// Par metros : Ninguno.
// Devolve ..: Una cadena.
// -----------------------------------------------------------------------
FUNCTION PictPts()
RETURN( "@E 9,999,999,999" )
// -----------------------------------------------------------------------

// -----------------------------------------------------------------------
// Funci¢n ...: PictEuros
// Descripci¢n: Cadena Picture para un GET.
// Par metros : Ninguno.
// Devolve ..: Una cadena.
// -----------------------------------------------------------------------
FUNCTION PictEuros()
RETURN( "@E 9,999,999,999.99" )
// -----------------------------------------------------------------------

// -----------------------------------------------------------------------
// Funci¢n ...: Num2StrDec
// Descripci¢n: Convierte un campo num‚rico a cadena, para mostrar en un
//              LISTBOX.
// Par metros : nCampo -> Valor Num‚rico.
// Devolve ..: Cadena formateada.
// -----------------------------------------------------------------------
FUNCTION Num2StrDec( nCampo )
RETURN Transform( nCampo, "@E 999,999,999.99" )
// -----------------------------------------------------------------------

// -----------------------------------------------------------------------
// Funci¢n ...: Num2Str
// Descripci¢n: Convierte un campo num‚rico a cadena, para mostrarlo en un
//              LISTBOX.
// Par metros : nCampo -> Valor Num‚rico.
// Devolve ..: Cadena formateada.
// -----------------------------------------------------------------------
FUNCTION Num2Str( nCampo, nSize, nDec )

   LOCAL cPicture := "@E 999,999,999,999"

   DO CASE
      CASE nSize = 12 .AND. nDec = 0
           cPicture := "@E 999,999,999,999"
      CASE nSize = 12 .AND. nDec = 2
           cPicture := "@E 999,999,999.99"
      CASE nSize = 12 .AND. nDec = 3
           cPicture := "@E 99,999,999.999"
      CASE nSize = 08 .AND. nDec = 0
           cPicture := "@E 99,999,999"
      CASE nSize = 08 .AND. nDec = 2
           cPicture := "@E 99,999.99"
      CASE nSize = 08 .AND. nDec = 3
           cPicture := "@E 9,999.999"
      CASE nSize = 07 .AND. nDec = 0
           cPicture := "@E 9,999,999"
      CASE nSize = 07 .AND. nDec = 2
           cPicture := "@E 9,999.99"
      CASE nSize = 07 .AND. nDec = 3
           cPicture := "@E 999.999"
      CASE nSize = 05 .AND. nDec = 0
           cPicture := "@E 99,999"
      CASE nSize = 05 .AND. nDec = 2
           cPicture := "@E 99.99"
      CASE nSize = 05 .AND. nDec = 3
           cPicture := "@E 9.999"
      CASE nSize = 02 .AND. nDec = 0
           cPicture := "99"
   ENDCASE

RETURN Transform( nCampo, cPicture )
// -----------------------------------------------------------------------

// -----------------------------------------------------------------------
// Funci¢n ...: Num2Doc
// Descripci¢n: Convierte un campo num‚rico a cadena, para mostrarlo en un
//              LISTBOX. Solo para los n£meros de documento.
// Par metros : nCampo -> Valor Num‚rico.
// Devolve ..: Cadena formateada.
// -----------------------------------------------------------------------
FUNCTION Num2Doc( nCampo )
RETURN Transform( nCampo, "@E 9999999" )
// -----------------------------------------------------------------------
 
Saludos.
João Santos - São Paulo - Brasil
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by joseluisysturiz »

Tienes toda la razon, he probado muchas combinaciones y cuando es para modificar, si le colocas el punto, no te hace la limpieza de los enteros, imagino ya sera algo de la clase...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: MODIFICAR UN GET NUMERICO

Post by Armando »

Amigos del foro:

Como información adicional les menciono que en la clase TXBrowse sí
funciona como lo requieren.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

Re: MODIFICAR UN GET NUMERICO

Post by VitalJavier »

Armando

En el TxBrowse

Si le das "enter" para editar si lo hace bien.

Pero si le das oBrow:lFastEdit := .T. al darle el "." no hace nada
le tienes que dar un numero primero, ya sea 0...9 y después el "."

Saludos.
Post Reply