SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Cmps360 en Viernes 28 de Enero de 2005, 23:50

Título: Validar Text Box Con Propiedad Multiline
Publicado por: Cmps360 en Viernes 28 de Enero de 2005, 23:50
Hola amigos como estan tengo un problema, tengo una validacion para un Text Box pero cuando le aplico la propiedad Multiline=True la validacion no me funciona, la cual es la sigiente:

Select Case KeyAscii
Case Asc(" ")
            If Len(TxtDirProv.Text) = 0 Then
            KeyAscii = 0
        Else
        If Mid(TxtDirProv.Text, Len(TxtDirProv.Text), 1) = " " Then
            KeyAscii = 0
        End If
        End If

la cual me sirve para que no deje espacio en blanco al comienso y despues de un espacio no pueda hacer otro

Bueno no tengo nada mas que preguntar por los momentos agradesco de su ayuda Ok.
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: ArKaNtOs en Sábado 29 de Enero de 2005, 02:14
pues no se pero tu codigo es muy rebuscado :P mejor haz un ciclo en un boton y evalua la cadena completa:

Private Sub Command1_Click()
var1 = 0
If IsNull(Text1) = True Then MsgBox "error"
If Left(Text1, 1) = " " Then MsgBox "error"
    For x = 1 To Len(Text1)
        If Mid(Text1, x, 2) = "  " Then MsgBox "error en " & x: Exit Sub
    Next
end sub

checalo haber si te sirve :) bueno nos vemos  :hola:  espero que te ayude bye  :kicking:
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Cmps360 en Sábado 29 de Enero de 2005, 04:01
ok lo probare grasias por tu ayuda
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Brroz en Sábado 29 de Enero de 2005, 08:42
Hola.

Tu código no funciona (tampoco en un textbox sin multiline) en el caso de que el usuario escriba en el medio de un texto existente: es decir, la cosa va bien si escribes en el textbox todo seguido, pero si te posicionas en el medio del texto ya existente y escribes ahí, el código ya no funciona.

La cosa podría quedar asín:
Código: Text
  1.  
  2. Private Sub Text1_KeyPress(Keyascii As Integer)
  3.     If Keyascii = 32 Then
  4.         If Text1.SelStart = 0 Then
  5.             Keyascii = 0
  6.         ElseIf Mid(Text1.Text, Text1.SelStart, 1) = " " Then
  7.             Keyascii = 0
  8.         ElseIf Text1.SelStart + 1 <= Len(Text1.Text) Then
  9.             If Mid(Text1.Text, Text1.SelStart + 1, 1) = " " Then
  10.                 Keyascii = 0
  11.             End If
  12.         End If
  13.     End If
  14. End Sub
  15.  
  16.  

También podrías optar por validar el texto mediante el evento en un lostfocus o en un validate (mejor). Te llegaría con una línea así:
Código: Text
  1.  
  2.    Text1.Text = LTrim(Replace(Text1.Text, Chr(32) & Chr(32), Chr(32))
  3.  
  4.  

No se contempla el caso de evitar un espacio al final del texto ya que no dices nada sobre ello. De todas formas si lo necesitas no te debería costar mucho hacerlo...

Chao.
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Cyclop en Domingo 30 de Enero de 2005, 20:09
No seria mejor hacer un TRIM al final.


Salu2

Cyclopz
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Brroz en Martes 1 de Febrero de 2005, 11:15
¿Y los espacios intermedios?
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Cyclop en Martes 1 de Febrero de 2005, 23:27
Hacer esto tantas veces como sea posible

Código: Text
  1.  
  2. ' Reemplazamos dos espacios en blanco con uno
  3. Do While InStr(1,sString, "  ") > 0
  4.      sString = Replace(sString, "  ", " ")
  5. Loop
  6.  
  7.  

Salu2
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Brroz en Miércoles 2 de Febrero de 2005, 09:15
Ya, pues que sepas que te sobra el bucle y repites algo ya dicho:
Citar
También podrías optar por validar el texto mediante el evento en un lostfocus o en un validate (mejor). Te llegaría con una línea así:
Código: Text
  1.  
  2.   Text1.Text = LTrim(Replace(Text1.Text, Chr(32) & Chr(32), Chr(32))
  3.  
  4.  

 De todas formas con esto obligas al desaparecido Cmps360 a programar una validación. El mismo...

Abur.
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Cyclop en Miércoles 2 de Febrero de 2005, 17:12
Logicamente que es una alternativa mas ... que no pretende ser un estilo ni un estandar de validacion.

Salu2

Cyclopz
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: Cyclop en Miércoles 2 de Febrero de 2005, 17:15
Cita de: "Brroz"
Ya, pues que sepas que te sobra el bucle y repites algo ya dicho:
Citar
También podrías optar por validar el texto mediante el evento en un lostfocus o en un validate (mejor). Te llegaría con una línea así:
Código: Text
  1.   
  2.   Text1.Text = LTrim(Replace(Text1.Text, Chr(32) & Chr(32), Chr(32))
  3.  
  4.  

 De todas formas con esto obligas al desaparecido Cmps360 a programar una validación. El mismo...

Abur.
Si pero esto funciona solo si tiene 2 espacios en blanco (Chr(32) + Chr(32)), y si tiene 3? 4? o mas?

Salu2
Título: Re: Validar Text Box Con Propiedad Multiline
Publicado por: fap1603 en Viernes 11 de Marzo de 2005, 02:50
Hola, usa la propiedad keypress, y lo validas con el valor ascii, usa un contador, para saber la cantidad de espacios, y usa el mismo contador de llave, por ejemplo, si escriben : "hola a todos", le dices al keypress, if keyascii = 32 then llave =1 , luego mientras escribes, preguntas si llave es = 0 lo que siginifcaria que no hay espacios, pondiras la llave a cero, cuando el usuario escriba cualquier caracter que no sea de valor ascii 32, y volveras a preguntar. yo utilizo esta forma para validar el tipo de datos que se debe ingresar en un textbox o combo o lo que sea, y me funciona de maravilla, hasta consigo que solo ingresen dos decimales y eso, sin complicarme. Suerte.