FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Un Get con formato y rellenado automatico...
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Un Get con formato y rellenado automatico...
Posted: Sat Nov 15, 2008 08:10 PM

buenas tardes con todos...

Tengo un get con el formtato.. "999999.9999-xxxxx"

Se vera que tienes dos zonas numericas separadas por un punto y una de tipo texto "xxxx" separadas por un "-"

la idea es que se vaya rellenado las zonas a medida que se va escribiendo,, por ejemplo:
se inicia digitando el codigo como "123" y al presionar el punto "." se rellene la primera zona asi "000123." y el cursor se ubique despues del "punto"

luego se continua digitando la 2da zona con "78"  y al presionar el guion "-"  lo rellene de ceros la 2da zona ... y vaya  quedando  asi :  "000123.0078-"  dejando el cursor despues del guion

finalmente se digita la zona de texto y se digita... "PF" y si se presiona el enter en el get quedara asi... "000123.0078-00PF"

Un detalle mass... donde quiera q este el cursor si se presiona el "." (punto), el cursor debe ubicarse siempre adelante del punto.. y si se presiona el guion el cursor se debe ubicar despues del "guion"
Espero haberme dejado entender

Graciasss. por su tiempo

Lubin

Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Un Get con formato y rellenado automatico...
Posted: Sun Nov 16, 2008 08:22 AM

Hola Lubin,

lo que yo use siempre fue formatear la entrada en el valid. Por ejemplo, en un programa de facturación el nro de comprobante tiene el formato A 9999-99999999, una letra , 4 digitos de sucursal/delegacion- y el nro de comprobante con 8 digitos. Para que fuese sencillo ingresar tales números, permito que el usuario ingrese en el get A3-104, y en el valid del get transformo la variable del get a su formato, A 0003-00000104. Eventualmente tambien puede ingresar A104, si está en la sucursal 3, ya que si no la especifica automáticamante asume la sucursal que tiene configurada el programa. Otro detalle es que el picture es @K, lo que implica que si lo primero que digita no es un movimiento de cursor borra la entrada.

Espero que te sirva la idea,

Un saludo

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Un Get con formato y rellenado automatico...
Posted: Sun Nov 16, 2008 08:32 AM

GRacias Carlos
me das un hilo para comenzar a encontrar la solucion, vere la alternativa

Lubin

Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Re: Un Get con formato y rellenado automatico...
Posted: Mon Nov 17, 2008 05:09 AM

Amigos
Si alguien tiene alguna otra idea...

estare atento de escucharla

Lubin

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Un Get con formato y rellenado automatico...
Posted: Mon Nov 17, 2008 01:46 PM

Hola,

Mira en el NORTON GUIDE(NG.EXE) del CLIPPER:

PICTURES CODE en el MENU del NORTON GUIDE.

Por ejemplo:

PICTURE "@B... ), PICTURE "@K...), PICTURE "@Z...), etc.

Busca uno que te sirva.

Saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 632
Joined: Tue Dec 12, 2006 07:34 PM
Re: Un Get con formato y rellenado automatico...
Posted: Mon Nov 17, 2008 04:31 PM
lubin wrote:buenas tardes con todos...

Tengo un get con el formtato.. "999999.9999-xxxxx"

Se vera que tienes dos zonas numericas separadas por un punto y una de tipo texto "xxxx" separadas por un "-"

la idea es que se vaya rellenado las zonas a medida que se va escribiendo,, por ejemplo:
se inicia digitando el codigo como "123" y al presionar el punto "." se rellene la primera zona asi "000123." y el cursor se ubique despues del "punto"

luego se continua digitando la 2da zona con "78" y al presionar el guion "-" lo rellene de ceros la 2da zona ... y vaya quedando asi : "000123.0078-" dejando el cursor despues del guion

finalmente se digita la zona de texto y se digita... "PF" y si se presiona el enter en el get quedara asi... "000123.0078-00PF"


Un detalle mass... donde quiera q este el cursor si se presiona el "." (punto), el cursor debe ubicarse siempre adelante del punto.. y si se presiona el guion el cursor se debe ubicar despues del "guion"
Espero haberme dejado entender

Graciasss. por su tiempo

Hola Lubin, buenos dias como estas, tendrias que crear tu propia rutina para que te rellene los ceros a la izquierda, es como una captura de cuentas contables con formato de 1 a 4 digitos, te pasare un ejemplo de mi rutina.

FORMATO1(1020-1, Ctaf, .T.)


FUNCTION FORMATO1(VarCta, Ctaf,lGuion)
Local lcad1, lcad2, lcad3, lCad4, I, cFormCta

I := 0
lcad1 := ""
lcad2 := ""
lcad3 := ""
lcad4 := ""

//Procesa el primer campo de 4 Digitos: 0000- // Nivel 1
Do While .T.
I=I+1

IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF

lcad1 := lcad1 + SubStr(Ctaf, I , 1)
EndDo

//Procesa el segundo campo de 4 Digitos: 0000-0000 // Nivel 2
Do While .T.
I=I+1

IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF

lcad2 := lcad2 + SubStr(Ctaf, I , 1)
EndDo

//Procesa el tercer campo de 4 Digitos: 0000-0000-0000 // Nivel 3
Do While .T.
I=I+1

IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF

lcad3 := lcad3 + SubStr(Ctaf, I, 1)
EndDo

//Procesa el cuarto campo de 4 Digitos: 0000-0000-0000-0000 // Nivel 4
Do While .T.
I=I+1

IF SubStr(Ctaf, I, 1) == '-' .OR. I > Len(Ctaf)
Exit
EndIF

lcad4 := lcad4 + SubStr(Ctaf, I, 1)
EndDo

*Nota: Tienes que indicar los 3 '-', ej: 1--, y como resultado: 00001-0000-0000-0000

IF lGuion
cFormCta := STRZERO(Val(lcad1),4) +'-'+ STRZERO(Val(lcad2),4)+'-'+ STRZERO(Val(lcad3),4)+'-'+ STRZERO(Val(lcad4),4)
ELSE
cFormCta := STRZERO(Val(lcad1),4) + STRZERO(Val(lcad2),4) + STRZERO(Val(lcad3),4) + STRZERO(Val(lcad4),4)
ENDIF
RETURN (cFormCta)



Espero haberte dado la idea de lo que quieras hacer, buen dia amigo.

Lubin
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Re: Un Get con formato y rellenado automatico...
Posted: Mon Nov 17, 2008 05:07 PM

Muchas Gracias ACC69

por lo que veo me suguieres una funcion de conversion.. luego de haber digitado.. pero le dare vuelta.. para ver como lo hago en tiempo de ejecucion,, con esta ayudaa.. graciass.

Continue the discussion