2
« en: Sábado 20 de Noviembre de 2010, 19:47 »
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, ","), ",", ".")