SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: kennety en Miércoles 28 de Mayo de 2003, 13:38
-
La question es la siguiente:
Tenemos un form donde tenemos que responder a una pregunta y tenemos 4 posibles soluciones cada una con un número de 2 dígitos que la identifica ( 11,12,13 y 14). Tenemos un txtbox donde debemos introducir la respuesta (txtRespuesta).
Problema si por ejemplo en lugar de responder una de las opciones posibles introducimos el número 41, sucede que se borra y aparece un paréntesis, es decir escribe el caracter que le corresponde al nº 41. Hay alguna solución sencilla para que esto no ocurra?
Texto del sub en question:
Private Sub txtRespuesta_KeyPress(Tecla As Integer)
lblValidar.Visible = True
cmdEnter.Visible = True
If Tecla = 8 Then 'Tecla BackSpace.
Else
If Tecla = 13 And Not(txtRespuesta.Text = "") Then Tecla = txtRespuesta.Text
If (Tecla < 15) And (Tecla > 10) Then
tmrComprobar.Interval = 0
Tecla = txtRespuesta.Text
txtRespuesta.Text = ""
Respuesta Tecla
Else
txtRespuesta.Text = ""
lblValidar.Visible = False
cmdEnter.Visible = False
End If
Else
If (Tecla < 49) Or (Tecla > 52) Then 'Si es un número del 1 al 4...
Beep
Tecla = 0
End If
End If
End If
End Sub
-
¿Te sirve esto?:
'En diseño limita a 2 el nº máximo de caracteres(maxlength=2)
Private Sub Text1_Change()
If Text1.Text = "" Then Exit Sub
If Not IsNumeric(Text1.Text) Then
MsgBox "error"
Text1.Text = ""
Exit Sub
End If
If (Len(Text1.Text) = 1 And Text1.Text <> "1") Or _
(Len(Text1.Text) = 2 And CInt(Text1.Text) < 11 _
Or CInt(Text1.Text) > 14) Then
MsgBox "error"
Text1.Text = ""
Exit Sub
End If
End Sub
:suerte:
-
Hola:
otra posibilidad seria que programes en el LostFocus, seria mas o menos asi:
Private Sub txtRespuesta_LostFocus()
If Val(txtRespuesta.Text) < 11 Or Val(txtRespuesta.Text) > 14 Then
MsgBox "Solo se permite el intervalo [11 - 14]"
txtRespuesta.Text = ""
txtRespuesta.SetFocus
End If
End Sub
Saludos;
-
Holas...
otra forma es en el evento validate de el objeto txtRespuesta, pues se ejecuta en el momento de intentar perder el foco del objeto seleccionado por cualquier medio (Mouse, enter, Tab) y antes del LostFocus.
Private Sub txtRespuesta_Validate(MantenerFoco As Boolean)
MantenerFoco = False
if txtrespuesta < 11 OR txtrespuesta > 14 then
msgbox "mensaje de error"
MantenerFoco = true
Endif
Espero te sirva!!!