SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: avaguin en Sábado 11 de Septiembre de 2004, 13:52

Título: Cambiar El Punto Por La Coma En Visual
Publicado por: avaguin en Sábado 11 de Septiembre de 2004, 13:52
Hola a todos y todas. Este es mi primer post en este foro y después de pasarme un par de horas leyendo muchos mensajes, solo tengo que decir que es el mejor foro que he encontrado, sobretodo por la cantidad de respuestas que dais a las diferentes dudas. Muchas gracias de antemano.

Bueno mi primera duda que os quería plantear es la siguiente:

Estoy haciendo una aplicación en VB6 y en ciertos campos necesito poner números decimales. Mi problema es que me gusta trabajar con el teclado númerico y para poner los decimales no puedo usar la tecla del punto de la parte numérica, ya que visual lo coge como separador de miles. Hay alguna función que al pulsar dicha tecla me lo convierta en la coma para que entienda que es un decimal. No se si me habré explicado bien pero espero que entendais mi duda. Muchas gracias de antemano.

Nota: Siento repetir el mismo mensaje que en el foro VBA pero me confuncí de foro al principio.
Título: Re: Cambiar El Punto Por La Coma En Visual
Publicado por: Jose Arriagada en Sábado 11 de Septiembre de 2004, 14:57
Facil:

Crea una funcion que capture tu numero, lo transforme a string, que ubique el punto y lo cambie por coma y devuelva el valor ahora convertido en decimal.

Public Function ConvDecimal(ByVal sNumero As String) As Double
posicion = InStr(sNumero, ".")
If posicion > 0 Then
    Mid(sNumero, posicion, 1) = ","
End If
ConvDecimal = CDbl(sNumero)
End Function
Título: Re: Cambiar El Punto Por La Coma En Visual
Publicado por: cpmario en Sábado 11 de Septiembre de 2004, 18:00
Revisa la Configuración Regional de tu computadora en el Panel de Control, ya que si tienes una configuración como en España, la separación de los miles es con punto y la decimal con la coma. En cambio la configuración regional de México la separación de los miles es con la coma y los decimales con punto.
 :)
Título: Re: Cambiar El Punto Por La Coma En Visual
Publicado por: Juanolo en Lunes 13 de Septiembre de 2004, 16:38
Hola, avaguin. Bienvenido!

El consejo de José es lo que esperas. Pero creo que puedo aportar un poco.
El problema de hacerlo así, es que queda "fija" la restricción que cambia el "." por ",". Eso te dará error cuando corras la aplicación en una máquina en la que efectivamente el 'punto' sea el separador de decimales.

¿Solución?
 Creas una variable global (en algún modulo), a la que llamaremos sDec, que es del tipo string y guardará el separador decimal del sistema.

Código: Text
  1. Global sDec as String
  2.  

Luego, en el formulario principal, (en el evento form_load, por ejemplo) te encargas de averiguar cual es el separador decimal de la máquina y lo guardas en la variable. Para ello, dividiremos 10 en 3, y presentaremos el resultado en formato decimal. Eso dará "3.33" ó "3,33" dependiendo de la configuración del sistema, lo que nos permitirá descubrir el formato usado.

Código: Text
  1.  
  2.     'Detectar caracter decimal
  3.     stmp = Format$(10 / 3, "##.00")
  4.     If InStr(stmp, ".") Then
  5.         SdeC = "."
  6.     ElseIf InStr(stmp, ",") Then
  7.         SdeC = ","
  8.     End If
  9.   
  10.  

Esta variable la podrás llamar, luego, desde cualquier lugar en la aplicación.


Luego, cuando y donde quieras aplicar el cambio, introduces el siguiente código. En el ejemplo, es un cuadro de texto llamado text1.

Código: Text
  1. Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
  2.         Select Case KeyAscii
  3.         Case Asc("."), Asc(",")
  4.             KeyAscii = Asc(SdeC)
  5.         End Select
  6. end sub
  7.  

Si te fijas, no importa cual sea la configuración del sistema, ni de si tu presionas ',' o '.', siempre te dará el caracter decimal válido.

Espero te ayude.

Salu2. :hola: