• Jueves 28 de Marzo de 2024, 22:45

Autor Tema:  Re: Punto del teclado numerico  (Leído 6714 veces)

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« en: Martes 9 de Septiembre de 2003, 21:56 »
0
Hola, mi aplicación está trabajando con €uros, y para escribir los numeros utilizo el teclado numerico. El problema es el siguiente: En los €uros, el decimal se hace con "," y en el teclado numerico hay "." , queria saber si hay algun codigo para que cuando escribas el punto (solo teclado númerico) se escriba una ","

Espero que me ayuden. Muchas Gracias:) :adios:
Moderador Noticiario - Programador Visual Basic

acalanto

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #1 en: Martes 9 de Septiembre de 2003, 22:31 »
0
Yo sólo he encontrado una solución a este problema lo cual no quere decir que existan otras.

Primer Paso: Determinar el tipo de separador decimal que tiene configurado el Sistema Operativo. (Puedes hacerlo con un format de cualquier valor decimal y analizar si pone '.' o ',')

En los formularios selecciona KeyPreview a TRUE y en el evento KeyDown puedes captar si han tocado el punto decimal o la coma y cambiarlo de acuerdo a la necesidad de cada momento.

Es un poco engorroso pero funciona y es la única forma en la que puedo tratar tan penosa deficiencia en los objetos de Microsoft.

Espero que te resulte útil.

Un saludo
-Acalanto-

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #2 en: Martes 9 de Septiembre de 2003, 23:52 »
0
El amigo Acalanto me gano de mano, pero hace falta una aclaracion adicional.

Es cierto... hay que usar el evento KEYDOWN, ya que te va a permitir capturar el codigo de la tecla oprimida.

Esto es fundamental ya que este evento tiene como parametro implicito KEYCODE.

Bien...

En respuesta a tu necesidad de determinar si el "." pulsado es el del teclado numerico, o el "." del teclado comun, te cuento que ...

KeyCode=190 (Teclado Alfabetico)
KeyCode=110 (Teclado Numerico)

Entonces si quieres programar el "." del teclado numerico, simplemente deberas colocar un IF en el evento KeyDown de cualquier objeto.

IF KEYCODE=110 then
    msgbox("Uds. pulso el . del teclado numerico")
End If

Espero que esto sea lo que necesitabas.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #3 en: Miércoles 10 de Septiembre de 2003, 15:23 »
0
Bueno, gracias por su ayua, pero lo que yo quiero, és lo siguiente (perdonen no haberme explicado con claridad;)):

Estoy en el "Text1", y pulso el punto del teclado numerico. Logicamente, en el text1, aparecerá el caracter ".", pues en vez de aparecer el "." lo que quiero es que aparezca ",". Es decir, hacer una sustitución de esa tecla.


Espero que ahora i lo entiendan:)
Moderador Noticiario - Programador Visual Basic

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #4 en: Miércoles 10 de Septiembre de 2003, 15:30 »
0
Solo falta un dato mas y tenes todo listo.

en el evento Keydown simplemente cuando detectas que se pulso el "." del teclado numerico, forzas la coma.

Ejemplo

Private sub text1_keydown(KeyCode As Integer, Shift As Integer)

if keycode=110 then
   keycode=asc(",")
end if

Y listo... esto fuerza a la aplicacion a interpretar el "." del teclado numerico, como si el operador hubiera pulsado la ",".

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #5 en: Miércoles 10 de Septiembre de 2003, 15:40 »
0
No me funciona ese codigo :'( Alguien sabe de que puede venir??? Yo solo pulso el "." que está al lado del "0" :bad:

Quizas es la config del teclado?

Gracias:)
Moderador Noticiario - Programador Visual Basic

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #6 en: Miércoles 10 de Septiembre de 2003, 15:44 »
0
Correlo con el depurador y fijate que Keycode te devuelve el "." numerico, aca me da ese valor, pero puede estar tirandote otro a vos.

Ponele msgbox o lo que quieras, pero el codigo que te pase, es el correcto, ya que lo estoy probando aca y funciona ok.

Un Abrazo

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #7 en: Miércoles 10 de Septiembre de 2003, 15:51 »
0
Mandame el ejemplo que has hecho tu, quizas soy yo quien hace el error.

El codigo no es erroneo, ni me sale el depurador, el programa se queda tan tranquilo al pulsar ".":(

Gracias Pablo. :adios:
Moderador Noticiario - Programador Visual Basic

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #8 en: Miércoles 10 de Septiembre de 2003, 16:01 »
0
Lo que te digo es que lo ejecutes desde el depurador con F8.

De nada te va a servir mi ejemplo, ya que es lo mismo que te copie en el mensaje.

Anda hasta la rutina Keycode y en el primer IF pone el cursor y pulsa CTRL-F8, va a comenzar la ejecucion y cuando llegue a ese punto, va a detenerla activando el depurador.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

acalanto

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #9 en: Miércoles 10 de Septiembre de 2003, 16:38 »
0
Este código es de una aplicación y hace exactamente lo que necesitas.

Un saludo
-Acalanto-


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    On Local Error Resume Next
    Select Case KeyCode
        Case 8
                    KeyCode = 8
        Case 110
                    If Chr(DecChar) = "," Then KeyCode = 188 Else KeyCode = 110
        Case 188
                    If Chr(DecChar) = "," Then KeyCode = 188 Else KeyCode = 110
        Case 13
                    KeyCode = 13
        Case 107
                    KeyCode = 107
        Case 109
                    KeyCode = 109
        Case 0 To 47
                    KeyCode = 0
        Case 58 To 95
                    KeyCode = 0
        Case Is > 105
                    KeyCode = 0
    End Select
End Sub

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #10 en: Miércoles 10 de Septiembre de 2003, 20:46 »
0
No hay manera, ni con los metodos de chiaravel ni de Acalanto...

No se que pasa:(. Porfa, mandenme un ejemplo que a ustedes les funcione¡, quizas soy yo quien hace el error :s

Muchas gracias.:) :adios:
Moderador Noticiario - Programador Visual Basic

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #11 en: Miércoles 10 de Septiembre de 2003, 22:13 »
0
He provado el codigo en otro PC y tampoco funciona:( Quizas soy yo quien hace el error? O bien en WinXP no funciona? Gracias:)
Moderador Noticiario - Programador Visual Basic

observador

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
    • http://www.soloprogramacion.net/
Re: Punto del teclado numerico
« Respuesta #12 en: Jueves 11 de Septiembre de 2003, 06:14 »
0
Suponiendo que tu cuadro de texto se llama Text1, el codigo quedaria asi:

 
Código: Text
  1.  
  2. Private Sub Text1_KeyPress(KeyAscii As Integer)
  3.     If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
  4. End Sub
  5.  
  6.  
Por cierto, código probado en VB5 bajo WinXP...
Solo Programacion Net

Hasta pronto...

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #13 en: Jueves 11 de Septiembre de 2003, 08:28 »
0
Si estás utilizando eventos del formulario, comprueba que tienes la propiedad KeyPreview del formulario igual a True.

Por otro lado, el ejemplo que te da Observador no es válido, pues tú deseas aplicar el cambio de carácter sólo al punto del teclado numérico.

Sort.

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #14 en: Jueves 11 de Septiembre de 2003, 09:42 »
0
El codigo de observador si me funciona, a pesar de que también me sustituye el del teclado de letras, pero ya me basta, porque en el textbox ese solo habrán números no letras


Gracias por vuestro esfuerzo, un saludo :adios: :good:
Moderador Noticiario - Programador Visual Basic

observador

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
    • http://www.soloprogramacion.net/
Re: Punto del teclado numerico
« Respuesta #15 en: Jueves 11 de Septiembre de 2003, 18:33 »
0
Ciero... no me habia dado cuenta de que solo se queria cambiar el punto del teclado numerico...

Y bueno... a pesar de que Gerard dice que le sirve el codigo que mostre... pues de todas maneras aqui le coloco el codigo que hace exactamente lo que Gerard deseaba...

 
Código: Text
  1.  
  2. Dim Tecla As Integer
  3.  
  4. Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  5.     If KeyCode = 110 Then Tecla = 188 Else Tecla = 0
  6. End Sub
  7.  
  8. Private Sub Text1_KeyPress(KeyAscii As Integer)
  9.     If Tecla = 188 Then KeyAscii = Asc(",")
  10. End Sub
  11.  
  12.  
Solo Programacion Net

Hasta pronto...

Gerard

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #16 en: Jueves 11 de Septiembre de 2003, 21:04 »
0
Gracias observador! ese codigo si me funciona. Es justo justo lo que queria, a pesar de que con el otro tb habria sido suficiente.

Gracias por todo, en cuanto tengas ese proyescto terminado os lo pasare a la gente de solocodigo;)

Saludos, chao :adios:
Moderador Noticiario - Programador Visual Basic

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Punto del teclado numerico
« Respuesta #17 en: Sábado 13 de Septiembre de 2003, 10:18 »
0
Hace tiempo presenté ya el código que hoy repito.  

A pesar de que veo que Gerard ha quedado satisfecho con la solución que se le ha dado, reitero la conveniencia del código que ofrezco yo, porque con éste se soluciona también el problema de quienes tengan configurado el sistema con los signos invertidos: también a ellos les da problema el uso de la coma como signo decimal, lo cual no quedaría resuelto con la fórmula que habéis aceptado como buena, y sin embargo con el código que yo presento sí resolvería el problema independientemente de la configuración que el usuario tenga.

Saludos
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Tenaza

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Punto del teclado numerico
« Respuesta #18 en: Sábado 13 de Septiembre de 2003, 17:28 »
0