• Domingo 16 de Junio de 2024, 13:17

Autor Tema:  Re: Enigma en el Keypress...  (Leído 1280 veces)

kennety

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Enigma en el Keypress...
« en: Miércoles 28 de Mayo de 2003, 13:38 »
0
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

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Enigma en el Keypress...
« Respuesta #1 en: Miércoles 28 de Mayo de 2003, 14:41 »
0
¿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:

Majuhemo

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: Enigma en el Keypress...
« Respuesta #2 en: Miércoles 28 de Mayo de 2003, 15:51 »
0
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;
Ruben Delgado A.
rudela@msn.com
Lima-Peru

Mellileo

  • Miembro MUY activo
  • ***
  • Mensajes: 110
    • Ver Perfil
Enigma en el Keypress...
« Respuesta #3 en: Miércoles 28 de Mayo de 2003, 18:14 »
0
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!!!
Saludos...

Mellileo!!