Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

Neceisto darle Formato a los Textbox

Participa en el tema Neceisto darle Formato a los Textbox en el foro Programación.
Gente estoy en un problema.... creo que es una tonteria pero no se como solucionarlo.... ...

Buscar en este tema:
 
  •  
    #1 Neceisto darle Formato a los Textbox
    Gente estoy en un problema.... creo que es una tonteria pero no se como solucionarlo....

    Es sobre VBASIC. La mano es que tengo varios TextBox, a los cuales quiero que les aparezca el signo $ ya que son para colocar valores monetarios.... Se que hay que hay algo de una propiedad que se llama FORMAT, pero no lo pude hacer andar de ninguna manera... alguien me podra ayudar???

    Gracias.-
    +
     
    0
    Me gusta
     
    | Más
  • #2 Re: Neceisto darle Formato a los Textbox

    Private Sub Text1_Change()
    Text1 = Format(Text1, "Currency")
    End Sub
    Me gusta este mensaje
  • #3 Re: Neceisto darle Formato a los Textbox

    Y nada mas... con esto basta...? lo voy a probar ya... Gracias loco.-
    -----Agregado el 5/10/2009 a las 03 : 23 : 58-----
    Me escribe el signo $, pero no me deja escribar nada mas... me parece que me habian dicho que tengo que declarar algo puede ser....???
    Editado por cafia - 05.10.2009 14:23 hs. | Motivo: Mensajes unidos automáticamente
    Me gusta este mensaje
  • #4 Re: Neceisto darle Formato a los Textbox

    Vos lo que queres seguramente es esto:
    Que en el texbox, Nomas se puedan escribir Numeros y/o COMA y/o Punto.
    O solo numeros.
    Y que cuando escribas te ponga el $ Adelante.
    Este es el Algoritmo.
    Código:
    Option Explicit
    Dim posicion As Byte
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    'If IsNumeric(Chr(KeyAscii)) Or KeyAscii = 8 Or KeyAscii = 44 KeyAscii = 46 Then
    If IsNumeric(Chr(KeyAscii)) Or KeyAscii = 8 Then
        If KeyAscii = 8 Then
            posicion = Text1.SelStart
        Else
            posicion = Text1.SelStart + 1
        End If
        Text1 = Mid(Text1, 2, Len(Text1))
        Text1 = "$" & Text1
        Text1.SelStart = posicion
    Else
        KeyAscii = 0
    End If
    End Sub 
    Primero explico algunas cosas para que entiendas.

    El Chr(Numero) me devuelve el caracter que represetan el numero en la tabla Ascii.
    Ejemplo, Para hacer el @ ARROBa, podes hacer ALT + 64


    Ese "64" no es casual, dado que en la tabla ASCII.

    http://www.elcodigoascii.com.ar/

    De ahi podes ver la tabla Ascii, tenes a la Izquierda el Numero que tiene y al lado el caracter que representa.

    - Ahora volviendo sobre el tema.
    Si la funcion "Chr" me devolvia el caracter que representa en la tabla ascii, eso quiere decir que si pongo

    Chr(64) - Me devuelve "@"

    Por cada vez que se aprete un tecla sobre el text1, la variable "KeyAscii" s carga con el valor de la tecla que apretamos, es decir si aprento "A", entonces "KeyAscii" Se carga con "65" que es el numero que tiene en la tabla ascii. A nosotros el "numero" no nos sirve, por ello necesitamos convertirlo nuevamente a su caracter,es decir que "65" pase a valer "A", para esto usamos Chr(KeyAscii)

    Ahora tambien esta IsNumeric(Chr(KeyAscii), IsNumeric, lo que hace es fijarse si el valor entre parentesis es NUMERO o LETRA.

    Como siempre las funciones se ejecutan desde la de mas adentro hacia la de afuera si apretamos "A", KeyAscii se carga con "65"
    Luego Chr(Keyascii), nos devuelve "A".
    Ahora el compilador es como que viera con sus "ojos" lo siguente

    IsNumeric("A").

    En este caso IsNumeric nos devuelve FALSE, proque no es numerico, entonces el IF quedaria algo asi para la "vista" del "compilador"
    Código:
    If IsNumeric("A") = True Then .... 
    
    Else 
    
    End If 
    Como Nos devuelve "FALSE" entonces en este caso en concreto iria por el ELSE:
    En el ELSE tenemos un KEYASCII = 0
    Esto significa que si paso por el IF y fue al ELSE tiene que ser una letra.

    Sin embargo nosotros no queremos que se escriban Letras, por ello ponemos KEYASCII=0
    Para que Cuando termine en el "END SUB" no escriba NADA, KEYASCII = 0 es lo mismo que ESCRIBIR NADA.
    Por lo tanto es como si no hubieramos apretado "A"
    Código:
    Ahora ¿Que pasa si apretabamo "4"?
    "4" = 52 en ASCII
    Chr(KeyAscii) ----> "4"
    ---> IsNumeric("4") ---> SI ---> TRUE
    If IsNumeric("4") = TRUE Then ....
    
    El IF Tambien tiene un "Or KeyAscii=8" , el "8" es la tecla "BackSpace" o "Borrar" :smile:
    Posiblemente si el usuario se equivoca quiera borrar, por lo que tenemos que agregar el "Keyascii=8", dado que "KeyAscii=8" no es un valor Numerico, por lo que pasaria al "KEYASCII=0".
    Esto haria como que no hubieramos apretado,la tacla borrar y por ende no se podria borrar los numeros y seria algo muy molesto.

    Los KeyAscii = 44 KeyAscii = 46 son para "El punto y la coma", 44 en ASCII es "COMA" y 46 en ASCII es el PUNTO.
    Como la coma y punto NO SON numericos, entonces debemos agregarlos con un "Or KeyAscii=44 Or KeyAscii=46".

    Como veras te deje, un IF en verde el cual tiene la tilde adelante, para que el compilador "NO LO LEA".
    Si embargo si le borras la tilde, lo tenes como opcion

    Ahora en este caso entra al IF, el IF tiene lo siguiente:
    Código:
     If KeyAscii = 8 Then
            posicion = Text1.SelStart
        Else
            posicion = Text1.SelStart + 1
        End If
        Text1 = Mid(Text1, 2, Len(Text1))
        Text1 = "$" & Text1
        Text1.SelStart = posicion
    
    EL IF lo que se fija es SI APRETAMOS PRECISAMENTE BORRAR o CUALQUIER otra tecla.
    Si apretamos BORRAR (KEYASCII = 8 ) entonces Guarda la posicion actual donde esta el " | " que titila.
    Si no, Le suma uno a la posicion

    Si borramos por ejemplo ----> "PED|RO" con la barrita titilando donde yo la puse y borramos la "D" con la tecla BORRAR o BACKSPACE,que esta arriba del ENTER.
    Nos queda asi

    "PER|O", Si seguimos borrando nos queda ---> "PER|", lo cual es muy diferente a cuando borramos normalmente.
    Cuando borramos Normalmente hace este efecto.

    "PED|RO" -> "PE|RO" -> "P|RO" -"|RO"

    Para obtener este efecto, Guardamos la posicion, dado que si no se mantendria.

    Ahora si escribimos normalmente el curso hace esto "P|" -> "PE|" -> "PED|" -> "PEDR|" -> "PEDRO|"

    Como veras, siempre se suma a UNA POSICION ADELANTE.

    Para ello aplicamos el "posicion= text1.SelStart +1"

    SelStart es "La posicion donde estara o esta el cursor".

    Luego del IF secundario estamo con lo mas importante
    [code]
    Text1 = Mid(Text1, 2, Len(Text1))
    Text1 = "$" & Text1
    Text1.SelStart = posicion
    [code]

    El primer reglon lo que hace es que, tome todo lo que este ignorando el primer caracter.
    EJemplo si tenemos "$20000"
    Lo que se borra es "$"
    Esto lo vamos a hacer, dado que si no lo hacemos, por cada vez que apretemos una tecla, se agrega un "$" entonces si quiero escribir "$200" pasaria lo siguiente.

    "$2" -> "$$20" -> "$$$200" cosa que no queremos que pase.

    Si el cuadro de texto esta vacio, no pasa nada, dado que la funcion MID lo que hace es:

    Mid (PALABRA O VARIABLE A TOMAR , DESDE QUE POSICION EMPIEZA A LEER , CUANTAS POSICIONES TOMA)

    si tenemos "PEDRO" y ponemos "A=MID("PEDRO", 3,2")
    "A" tendria a "DRO"

    si tenemos "PEDRO" y ponemos "A=MID("PEDRO", 2,3")
    "A" tendria a "EDRO"

    la Funcion "LEN(TEXTO o VARIABLE)" nos devuelve la CANTIDAD de letras.

    "PEDRO" = 5 Letras por lo que :

    A=LEN("PEDRO")
    "A" tendria "5" ---> A=5

    Luego de tomar el valor de por ejemplo "$20" y le vamos a agregar un "0" para que sea "$200"
    Entonces tomariamos de "$200" el "200" que empiza desde la posicion o letra en la posicion "2" hasta "la cantidad de letras que resten"(para ello usamos Len(text1).


    Esto se lo asignamos al "text1" mismo, Ahora esto tiene un problema.

    Cuando hacemos esto el Cursor hace lo siguiente.Se val al FINAL del text1. lo cual, ya tuvimos en cuenta y por ello gurdamos lo posicion en la variable "posicion" (muy original no?)

    Entonces recuperamos la posicion de la siguiente manera.
    Código:
         Text1.SelStart = posicion
    
    Para que no tengas que molestarte en compilar y leer todo.
    --------------------------------------------------------------------------------------

    Si queres aca tenes el metodo facil..

    Descargarlo desde


    DOWNLOAD

    Y tambien un convertidor de ASCII a NUMERO y de NUMERO a ASCII, para que no tengas que preguntar que valor tiene tal caracter o que caracter represetan tal numero


    Convertidor ASCII Y CARACTER

    DOWNLOAD

    BIEN LOS DEJO ADJUNTOS AL POST, X MEDIO DEL FORO POR SI ALGUN DIA NO ANDAN LOS LINK.
    IGUALMENTE LOS LINK DE 4SHARED, CADUCA EL AÑO 2023 EL DIA 9 DE JULIO, ASI QUE ESTARAN FUNCIONANDO X UN PAR DE AÑOS
    Archivos adjuntos
    Tipo de archivo: rar ejemplo_Formato_Dinero.rar (1.2 KB, 0 vistas)
    Tipo de archivo: rar BUSCAR ASCII Y CARACTERES.rar (1.4 KB, 0 vistas)
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 3 RESPUESTAS
  • 396 VISTAS
  • 2 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB