Visual Basic - Convertir el punto numérico en coma decimal

Life is soft - evento anual de software empresarial
 
Vista:

Convertir el punto numérico en coma decimal

Publicado por xsara1_9 (11 intervenciones) el 02/05/2005 08:47:54
Hola amigos, necesito que el punto que está entre el 0 y el intro en la parte derecha del teclado me funcione en vez de punto como coma decimal pero que el punto que está entre la coma y el guión que funcione perfectamente como punto. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Convertir el punto numérico en coma decimal

Publicado por Anonimo (100 intervenciones) el 02/05/2005 13:49:37
No se entiende nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir el punto numérico en coma decimal

Publicado por EGV (385 intervenciones) el 02/05/2005 17:33:54
tendrias que utilizar el evento Keypres del form y cuando lee la tecla del punto de la derecha lo convierta en coma
Habria que probar si funciona
suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Convertir el punto numérico en coma decimal

Publicado por Luis (79 intervenciones) el 02/05/2005 18:01:19
Deacuerdo con EGV, yo lo hago de esa forma y funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Podriais explicarme un poco mas

Publicado por xsara1_9 (11 intervenciones) el 03/05/2005 10:39:16
Muchas gracias por contestarme, lo malo es que no tengo muy claro a que os referiis, me gustaría que me especificarais un poquillo lo del keypress.
Yo lo utilizo cuando en un campo de dígitos no permito introducir texto pero lo hago con los códigos Ascii, por ejemplo:
Private Sub txtTelefono_KeyPress(KeyAscii As Integer)
If Not ((KeyAscii > 47 And KeyAscii < 58) Or KeyAscii = 8) Then
KeyAscii = 0
End If
End Sub
Como asignais al punto el valor de la coma decimal ?
Si usais el código Ascii del punto, afecta tanto al punto que está entre el 0 y el Intro como al que está entre la coma y el guión, verdad?
Muchas gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Podriais explicarme un poco mas

Publicado por Avellaneda (131 intervenciones) el 03/05/2005 11:18:19
En vez de controlarlo en el evento KeyPress, debes hacerlo en el evento KeyDown:
Punto del teclado numérico KeyCode = 110
Punto del teclado alfabético KeyCode = 190
Saludos

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Podriais explicarme un poco mas

Publicado por Luis (79 intervenciones) el 03/05/2005 16:12:55
Es en el Keypress, para eso es este evento. Deverías hacerlo así:
If KeyAscii = vbKeyReturn Then 'se ha presionado Enter
SendKeys "{TAB}"
Else
If Valida_NumerodeComas(TxtNum, KeyAscii) Then
If Not ValidaNroDec(KeyAscii) Then 'se valida que el caracter presionado sea numérico
'se ha presionado un caracter no numérico, luego se cancela la tecla presionada por el usuario
KeyAscii = 0
End If
Else
KeyAscii = 0
End If
End If

'Las funciones Valida_NumerodeComas y ValidaNroDec debes hacerlas tú, si quieres te las explico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias Luis, necesitaría más detalle

Publicado por xsara1_9 (11 intervenciones) el 04/05/2005 09:36:39
Hola Luis:
Muchas gracias por ayudarme, no tengo claras las funciones de las que me hablas.
A mí me introducen por teclado en un txtNum el 23.56 y tiene que guardar 23,56.
Valida_NumerodeComas lo utilizas por si te escriben más de una coma?
ValidaNroDec para comprobar que el caracter es numérico?
Y cuando cambias el punto por la coma?
Perdona por molestarte tanto, si pudieras explicarme un poco más las funciones,gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias Luis, necesitaría más detalle

Publicado por Anonimo (100 intervenciones) el 04/05/2005 13:35:46
Te lo están dando servido en bandeja, ¡esfuérzate un poco!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias Luis, necesitaría más detalle

Publicado por Luis (79 intervenciones) el 04/05/2005 15:25:36
Function ValidaNroDec(ByRef KeyAscii As Integer) As Boolean
Dim cCad As String
Dim nPos As Integer

If KeyAscii = 46 Then
KeyAscii = 44
End If

cCad = "0123456789," & Chr(8)
nPos = InStr(LocCad, Chr(KeyAscii))

If nPos > 0 Then
ValidaNroDec = True
End If

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Código comentado

Publicado por Avellaneda (131 intervenciones) el 04/05/2005 11:38:14
Public sDecimal As String
Private Sub Form_Load()
Dim sTemp As String
' Capturar la configuración regional del equipo
sTemp = Format(1.5, "#.#")
sDecimal = IIf(InStr(sTemp, ","), "," , ".")
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim sCar As String * 1
' Controlar valores numéricos
sCar = Chr(KeyAscii)
If InStr("0123456789.," & Chr(8) & Chr(13), sCar) = 0 Then
KeyAscii = 0
Exit Sub
End If
' Cambiar el punto por la coma según la configuración regional
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = IIf(sDecimal = ",", 44, 46)
' No permitir duplicar la coma (o el punto) decimal
If (InStr(Text1, sDecimal) > 0) Then KeyAscii = 0
Endif
End Sub
Espero que así te sirva
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar