• Sábado 21 de Diciembre de 2024, 14:43

Autor Tema:  Admitir solo numeros y un solo punto para operaciones  (Leído 7214 veces)

banderousky

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: mx
    • Ver Perfil
Admitir solo numeros y un solo punto para operaciones
« en: Jueves 18 de Noviembre de 2010, 04:57 »
0
Hola soy ingeniero electromecanico y estoy realizando un proyecto y estoy utilizando
visual basic 6.0 pero mi gran duda es que... como puedo hacer para que en una caja de texto
me admita solo numeros (esto ya se como hacerlo) y que me admita solamente un punto, ya que
estoy haciendo operaciones matematicas con estas cajas de texto, no deben de llevar mas de un
punto decimal porque me sale un error. saludos y de antemano gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #1 en: Jueves 18 de Noviembre de 2010, 10:07 »
0

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #2 en: Jueves 18 de Noviembre de 2010, 15:29 »
0
Creo que te Serviria InStr


Código: PowerBuilder
  1.  
  2.  
  3. strNumero = InputBox("Proporciona un numero:")
  4. if inStr(strNumero,".")>0 then
  5.    MsgBox("Contiene Punto")
  6. else
  7.     MsgBox("No Contiene Punto")
  8. end if
  9.  


Nota: No lo compile

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

banderousky

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: mx
    • Ver Perfil
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #3 en: Jueves 18 de Noviembre de 2010, 17:04 »
0
hola muchas gracias, creo que no me especifique bien
miren lo que intento hacer es que en un textbox
me admita numeros y un solo punto, que no se pueda
repetir mas de una vez el punto por ejemplo 12.32
y no 12.32.1.4.2 porque al momento de hacer operaciones
matematicas me produce errores saludos

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #4 en: Viernes 19 de Noviembre de 2010, 09:33 »
0
Cita de: "banderousky"
creo que no me especifique bien
Sólo tienes que modificar ligeramente el ejemplo de F_Tanori, no me seas vago  ;)

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #5 en: Sábado 20 de Noviembre de 2010, 08:47 »
0
:blink:  :whistling:

Creo que hemos entendido tu explicacion desde el principio...  :rolleyes:
es cuestion de razonar un poco....
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

banderousky

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: mx
    • Ver Perfil
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #6 en: Sábado 20 de Noviembre de 2010, 19:47 »
0
estube estudiando un libro de visual basic y llegue
a la siguiente conclusion de como resolver este problema
espero y les sirva a alguien mas, yo lo necesitaba para no ingresar
mas de un punto decimal en las cajas de texto que necesito para hacer
operaciones matematicas, despues me encontre con el problema de cuando
ponia pegar en la caja de texto y podia poner un letas y me cometia errores
por lo que tube qe restringir la itulizacion de pegar o crtl + V
bueno saludos a todos


en el evento keypress de la caja de texto

'Bloqueamos la utilización de pegar o Crtl+V para evitar que se ingresen letras'
'cuando es obligatorio ingresar solamente numeros'
 
 Clipboard.Clear
 Clipboard.SetText ""

'Solo admitimos numeros en la caja de texto y el punto decimal'

If InStr("0123456789." & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If

Dim sCar As String * 1
 sCar = Chr(KeyAscii)

 If sCar = "." Then
 ' comprueba si se ha pulsado el punto'
 KeyAscii = IIf(sDecimal = ",", 44, 46)
 sCar = Chr(KeyAscii)

 ' si ya se ha puesto un punto decimal, no admite otro
 If (InStr(txtC2H2, sCar) > 0) Then
  KeyAscii = 0
  Exit Sub
 End If

 Exit Sub
 End If

If KeyAscii = 13 Then            'Verifica que se pulsa la tecla ENTER'
    SendKeys "{tab}"               'Se pulsa la tecla TAB'
End If



y en el evendo mousedown

'Bloqueamos la utilización de pegar o Crtl+V para evitar que se ingresen letras'
'cuando es obligatorio ingresar solamente numeros'
 
 Clipboard.Clear
 Clipboard.SetText ""

y en el vento load del formulario (yo lo tengo en el evento activate)

'comprueba el formato numérico del sistema
sDecimal = Format(0.1, "#.#")
sDecimal = IIf(InStr(sDecimal, ","), ",", ".")

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #7 en: Sábado 20 de Noviembre de 2010, 20:16 »
0
Efectivamente, funciona. Pero restringir opciones al usuario porque no conoces el lenguaje es una pésima práctica y muy poco profesional.

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Admitir solo numeros y un solo punto para operaciones
« Respuesta #8 en: Sábado 20 de Noviembre de 2010, 23:53 »
0
Usa el evento validate del textbox. Esto ocurre cuando el textbox pierde el foco, ahí chequeas si tiene más de un punto o letras y por tanto cancelas.... al cancelar, el foco no sale  del textbox.

Código: Visual Basic
  1.  
  2. Private Sub Text1_Validate(Cancel As Boolean)
  3.     Dim n() As Byte
  4.     Dim HayPunto As Boolean
  5.    
  6.     If Text1.Text = "" Then
  7.         MsgBox "La caja de texto no puede quedar vacía, escriba al menos un 0."
  8.         Cancel = True
  9.     Else
  10.  
  11.         n = Text1.Text
  12.         For k = 0 To UBound(n) Step 2
  13.             If n(k) > 47 Then
  14.                 If n(k) > 58 Then
  15.                     MsgBox "No se permiten caracteres, sólo números."
  16.                     Cancel = True
  17.                     Exit Sub
  18.                 End If
  19.             Else
  20.                 If n(k) = 46 Then
  21.                     If HayPunto = False Then
  22.                         HayPunto = True
  23.                     Else
  24.                         MsgBox "Sólo se permite un punto para el número, como separador decimal."
  25.                         Cancel = True
  26.                         Exit Sub
  27.                     End If
  28.                 Else
  29.                     MsgBox "No se permiten caracteres, sólo números."
  30.                     Cancel = True
  31.                     Exit Sub
  32.                 End If
  33.             End If
  34.         Next
  35.     End If
  36. End Sub
  37.  
  38.  
«Ma non troppo»
----> ModoVacaciones = False<----