Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Impedir utilizar ciertos caracteres en un Textbox

Estas en el tema de Impedir utilizar ciertos caracteres en un Textbox en el foro de Visual Basic clásico en Foros del Web. Hola : Estoy necesitando impedir que tipeen dentro de un textbox "como primer caracter " el signo de interrogación : ¿ o el de exclamación ...
  #1 (permalink)  
Antiguo 29/06/2007, 08:05
 
Fecha de Ingreso: octubre-2006
Mensajes: 139
Antigüedad: 17 años, 6 meses
Puntos: 1
Impedir utilizar ciertos caracteres en un Textbox

Hola : Estoy necesitando impedir que tipeen dentro de un textbox "como primer caracter " el signo de interrogación : ¿ o el de exclamación : ¡.
También necesito que impida dentro del mismo textbox que tipeen el segundo caracter en mayúsculas.
¿ Alguna guía o sugerencia ?
  #2 (permalink)  
Antiguo 30/06/2007, 08:55
 
Fecha de Ingreso: mayo-2007
Mensajes: 74
Antigüedad: 17 años
Puntos: 1
Re: Impedir utilizar ciertos caracteres en un Textbox

Private Sub Text1_KeyPress(KeyAscii As Integer)

Select Case Text1.SelStart
Case 0
If KeyAscii = Asc("!") Or KeyAscii = Asc("¿") Then KeyAscii = 0: Exit Sub
Case 1
Select Case KeyAscii
Case Asc("A") To Asc("Z")
KeyAscii = 0
Exit Sub
End Select
End Select

End Sub
  #3 (permalink)  
Antiguo 03/07/2007, 13:51
 
Fecha de Ingreso: octubre-2006
Mensajes: 139
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Impedir utilizar ciertos caracteres en un Textbox

No me funciona. Quizás está faltando algo ?
¿ Donde está indicado que es el sólo para el primer caracter que deseo que no puedan ingresar ¡ ¿ (signos de exclamación o de interrogación) ?
En el segundo caso deseo impedir que la segunda letra sea en mayúsculas.
En ambos casos voy a enviar al usuario un msgbox con la aclaración correspondiente
Desde ya gracias
  #4 (permalink)  
Antiguo 04/07/2007, 05:05
 
Fecha de Ingreso: mayo-2007
Mensajes: 74
Antigüedad: 17 años
Puntos: 1
Re: Impedir utilizar ciertos caracteres en un Textbox

Text1.SelStart indica el punto de inserción de un caracter en el textbox.
Si es 0, entra como primer caracter, si es 1 entra como segundo. Esto se determina con select case 0 y case 1.
Como puede haber varios caracteres en el textbox y uno podría insertar caracteres en primer o segundo lugar no se puede usar len(text1.text).
A mi me funciona, sólo que en lugar del signo ¡ yo usé el !. Hay que cambiar esto:
If KeyAscii = Asc("¡") Or KeyAscii = Asc("¿") Then KeyAscii = 0: Exit Sub

Lo que habría que evitar, si es el caso es esto otro:
Suponer que el texto tiene "ssAdf"
Esto no va contra los requerimientos, pero si se selecciona la letra s (cualquiera) y se suprime, queda un segundo caracter en mayúscula A, y el SUB no lo detecta.
  #5 (permalink)  
Antiguo 04/07/2007, 05:26
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Impedir utilizar ciertos caracteres en un Textbox

el codigo que te pusieron esta perfecto,y funciona perfecto,¿lo probaste?

primero puso que trabaja con el Text1.SelStart,o sea desde el comienzo de la escritura.

en esta linea esta indicado que no se puede ingreasar primero el signo de interrogacion y de exclamacion:

If KeyAscii = Asc("!") Or KeyAscii = Asc("¿") Then KeyAscii = 0: Exit Sub

si pone alguna de esas letras al principio entonces le envia una pulsacion nula para que se bloquee el ingreso y despues sale de la rutina con Exit Sub

segundo:

Case Asc("A") To Asc("Z")
KeyAscii = 0
Exit Sub

con esa linea quiere decir que desde los caracteres de la a a la z si quiere ingresarlos en segundo lugar ya que trabaja con el Case 1 o sea el segundo lugar del textbox porqeu antes trabaja con el SelStart entonces le envia unapulsacion nula y sale de la rutina otra vez.

si lo que queres es que mande un mensaje al usuario entonces ponele que no salga de la rutina y que mande un mensaje.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #6 (permalink)  
Antiguo 04/07/2007, 09:02
 
Fecha de Ingreso: octubre-2006
Mensajes: 139
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Impedir utilizar ciertos caracteres en un Textbox

Este es el código completo que utilizo. Mi cuadro de texto se llama Titulo

Select Case Titulo.SelStart
Case 0
If KeyAscii = Asc("¡") Or KeyAscii = Asc("¿") Then KeyAscii = 0:
MsgBox " Por preservar el orden alfabético, evite utilizar los signos" & vbCrLf & "de interrogación o exclamación al comienzo del cuadro", vbCritical, " Consejo para cuadro Título"
Case 1
Select Case KeyAscii
Case Asc("A") To Asc("Z")
KeyAscii = 0
MsgBox " Por preservar el orden alfabético, evite utilizar los signos" & vbCrLf & "de interrogación o exclamación al comienzo del cuadro", vbCritical, " Consejo para cuadro Título"
Case Else
Exit Sub
End Select
End Select
End Sub

Colocando este código cualquier caracter que tipeo dentro del cuadro Titulo es disparador del msgbox, y no solo los signos "¡" "¿".
Incluso quité otros eventos utilizados para este cuadro Título, para ver si me ocasionaban conflictos y sigue funcionando mal. Con el código que coloqué arriba en un nuevo proyecto sigue arrojando el mismo error.
Nota : El caso de mayúsculas como segundo caracter funciona bien.

¿ Que puede ser ?
  #7 (permalink)  
Antiguo 04/07/2007, 10:26
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Impedir utilizar ciertos caracteres en un Textbox

Yo, si fuera tu me dajaba de case y keyascii, y utilizaba la funcion mid y right
aquí te va:
Cita:
Private Sub titulo_Change()
If Mid(titulo.Text, 1, 1) = "¡" Or Mid(titulo.Text, 1, 1) = "¿" Then
titulo.Text = Right(titulo.Text, Len(titulo.Text) - 1)
MsgBox " Por preservar el orden alfabético, evite utilizar los signos" & vbCrLf & "de interrogación o exclamación al comienzo del cuadro", vbCritical + vbOKOnly, " Consejo para cuadro Título"
titulo.SetFocus
End If
End Sub
Salu2
  #8 (permalink)  
Antiguo 04/07/2007, 20:47
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Impedir utilizar ciertos caracteres en un Textbox

no se que hiciste con el codigo principal,no era tan dificil solo tenias que poner los mensajes:

Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case Text1.SelStart
Case 0
If KeyAscii = Asc("!") Or KeyAscii = Asc("¿") Then KeyAscii = 0: MsgBox "no podes ingresar ! ni ¿"
Case 1
Select Case KeyAscii
Case Asc("A") To Asc("Z")
KeyAscii = 0
MsgBox "no podes ingresar la segunda letra en mayuscula"
Exit Sub
End Select
End Select
End Sub


saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #9 (permalink)  
Antiguo 05/07/2007, 12:14
 
Fecha de Ingreso: octubre-2006
Mensajes: 139
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Impedir utilizar ciertos caracteres en un Textbox

seba123neo : Gracias. El error era mío, claro. Colocaba el Msgbox debajo en esta línea KeyAscii = 0 : y no como debe ir que es seguido luego de los dos puntos.
If KeyAscii = Asc("¡") Or KeyAscii = Asc("¿") Then KeyAscii = 0: MsgBox
Funciona perfecto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:14.