Viernes 4 de Octubre de 2024, 14:39
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Punto del teclado numerico
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: Punto del teclado numerico (Leído 7127 veces)
Gerard
Miembro MUY activo
Mensajes: 188
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:)
Tweet
Moderador Noticiario - Programador Visual Basic
acalanto
Miembro activo
Mensajes: 80
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
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
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
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
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"
Quizas es la config del teclado?
Gracias:)
Moderador Noticiario - Programador Visual Basic
chiaravel
Miembro MUY activo
Mensajes: 242
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
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.
Moderador Noticiario - Programador Visual Basic
chiaravel
Miembro MUY activo
Mensajes: 242
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
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
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.
Moderador Noticiario - Programador Visual Basic
Gerard
Miembro MUY activo
Mensajes: 188
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
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
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub
Por cierto, código probado en VB5 bajo WinXP...
Solo Programacion Net
Hasta pronto...
Brroz
Miembro de PLATA
Mensajes: 1058
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
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
Moderador Noticiario - Programador Visual Basic
observador
Miembro activo
Mensajes: 65
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
Dim Tecla As Integer
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 110 Then Tecla = 188 Else Tecla = 0
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Tecla = 188 Then KeyAscii = Asc(",")
End Sub
Solo Programacion Net
Hasta pronto...
Gerard
Miembro MUY activo
Mensajes: 188
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
Moderador Noticiario - Programador Visual Basic
J.M.Movilla
Miembro MUY activo
Mensajes: 427
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
Punto del teclado numerico
«
Respuesta #18 en:
Sábado 13 de Septiembre de 2003, 17:28 »
0
http://foros.solocodigo.com/viewthread.php?tid=4942
Saludos
Tenaza
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Punto del teclado numerico