• Lunes 23 de Diciembre de 2024, 05:19

Autor Tema:  Primer Caracter En Mayuscula De Un String  (Leído 18945 veces)

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Primer Caracter En Mayuscula De Un String
« en: Sábado 30 de Julio de 2005, 16:06 »
0
Saludos

Me encuentro con el problema de ver como podría colocar a Mayuscula solo la primera letra de un string que se esté escribiendo en un TextBox e incluso que se evalue que si en el string hay un espacio en blanco, colocar en mayuscula la primera letra, y el resto quede en minuscula.

Ej: Augusto Valvuena

Unas lineas de código que haga esto sin que el usuario tenga que hacerlo por si mismo, algo automatizado.

Muchas gracias por cualquier ayuda.
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #1 en: Sábado 30 de Julio de 2005, 16:35 »
0
Tengo el siguiente código que podría indicarse que realiza la operación de mantener en una cadena la primera letra en mayuscula y el resto en minuscula, el problema está en que produce el error: Espacio de Pila Insuficiente.

Private Sub TxtNombre_Change()
    Dim i As Long
    Dim Reves As String
    Reves = ""
    For i = Len(TxtNombre.Text) To 1 Step -1
        Reves = Reves & Mid(TxtNombre.Text, i, 1)
    Next i
    TxtNombre.Text = StrConv(Reves, vbProperCase)
End Sub

Cómo podría solventar esto.
Saludos.
Si esto es Leído por accidente, induzca al vomito

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #2 en: Sábado 30 de Julio de 2005, 17:59 »
0
salu2.

Código: Text
  1. Dim TuCadena as string
  2. Dim Valstr as string
  3.  
  4. Valstr= ucase(mid$(Tucadena,1,1)) & mid$(tucadena,2)
  5.  
  6. Esto comvierte el string ya creado, pero si capturas los caracteres pulsados solo tienes que comprobar si el string que introduce tiene mas de 1 car, por ejemplo, con la función [B]Len[/B] y cambiar el primer caracter solo si [B]len(cadena) =1[/B] .
  7.  

No lo he probado pero supongo que tiene que funcionar

Espero haberte podido ayudar.

Agur
Mi mujer tiene un físico bárbaro!!!. Einstein.

zareth

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #3 en: Sábado 30 de Julio de 2005, 18:37 »
0
holas  :hola:
tal vez te pueda servir esto:
Código: Text
  1.  
  2. Private Sub Text1_Change()
  3. Dim x As Integer
  4. If Len(Trim(Text1.Text)) = 1 Then
  5.     Text2.Text = UCase(Mid(Text1.Text, 1, 1))
  6. ElseIf InStr(1, Text1.Text, " ", 1) > 0 Then
  7.     x = InStr(1, Text1.Text, " ", 1)
  8.     Text2.Text = UCase(Mid(Text1.Text, 1, 1)) + Mid(Text1.Text, 2, x - 1) + UCase(Mid(Text1.Text, x + 1, 1)) + Mid(Text1.Text, x + 2, Len(Text1.Text))
  9. Else
  10.     Text2.Text = UCase(Mid(Text1.Text, 1, 1)) + Mid(Text1.Text, 2, Len(Text1.Text))
  11. End If
  12. End Sub
  13.  
  14.  
aki lo hice con dos cuadros de texto, solo cambia el valor de salida para ke sea en un cuadro de texto.. suerte

z4r3th  :comp:
PD: ojo ke esta validacion es para dos palabras, ejem: Augusto Valvuena. No lo he probado con tres o mas... pero ya tienes la idea... nos vemos

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #4 en: Sábado 30 de Julio de 2005, 19:00 »
0
gracias a ambos probare con los códigos que me han indicado y les notifico.
saludos.
Si esto es Leído por accidente, induzca al vomito

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #5 en: Lunes 1 de Agosto de 2005, 01:42 »
0
Aún más fácil

Usa StrConv

Ejemplo:
     gstrText = StrConv(gstrText, vbProperCase)

 :)

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #6 en: Lunes 1 de Agosto de 2005, 18:43 »
0
Gracias muchachos, bueno no sé si el código de zareth sea lo justo ya que en caso de que se escriba un nombre más completo (1er nombre, 2do nombre, o ambos apellidos) ya no se reflejaria como debiese, variaria dependiendo del ingreso.

En mi código ya está la linea que indicas cpmario, es una buena linea de código sin duda alguna porque es lo que necesito que en el text se aplique, el problema es que cuando escribes un nombre, el cursos vuelve a empezar desde Len=0 (por asi decirlo) en el TextBox es decir....

Si se escribe: Juan
Uno escribe el primer caracter: J
lo eleva a mayuscula (todo bien con eso)
pero al escribir el siguiente caracter no lo pone a la derecha sino a la izquierda
Ej: Uj

y al final termina con esto: Nauj
El StrConv(TextBox, vbProperCase) si me sirve porque luego de un espacio en blanco escribe en mayuscula el caracter, de cada palabra, lo cual está bien.

Bueno perdon por el retraso, realmente hoy no podré metermele a este pequeño asunto del TextBox, debido a que otras cosas me han consumido el tiempo, mañana en la mañana si y les aviso, solo necesito metermele a realizar un Reves del string y listo.

Muchas gracias compadres.
Si esto es Leído por accidente, induzca al vomito

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #7 en: Lunes 1 de Agosto de 2005, 19:38 »
0
Coloca el código en el evento LostFocus

Código: Text
  1.  
  2. Private Sub TextBox_LostFocus()
  3.      TextBox.Text = StrConv(TeTextBox.Text, vbProperCase)
  4. End Sub
  5.  
  6.  


 :)

jodijo5

  • Miembro HIPER activo
  • ****
  • Mensajes: 518
  • Nacionalidad: pe
    • Ver Perfil
    • http://www.bluetecnologia.com
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #8 en: Lunes 1 de Agosto de 2005, 21:19 »
0
tengo una solucion mas corta me parece:
Código: Text
  1.  
  2. Private Sub Textnombre_change()
  3. On Error Resume Next
  4. Textnombre = UCase(Mid(Textnombre, 1, 1)) & Mid(Textnombre, 2)
  5. If (Asc(Mid(Right(Textnombre, 2), 1, 1)) = 32) Then Textnombre = Left(Textnombre, Len(Textnombre) - 1) & UCase(Right(Textnombre, 1))
  6. Textnombre.SelStart = Len(Textnombre)
  7. End Sub
  8.  
  9.  
=============================
Daniel Pomalaza Mendoza
visita el Dinosaurio Azul :-D
http://bluetecnologia.com

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #9 en: Lunes 1 de Agosto de 2005, 22:39 »
0
Yo probé algo así y no me dió ningún problema.

Código: Text
  1.  
  2. Private Sub Text1_Change()
  3.    Text1.Text=StrConv(Text1.Text,vbProperCase)
  4.    Text1.SelStar=Len(Text1.Text)
  5. End Sub
  6.  
  7.  

Por otro lado, el error número 28 'No hay suficiente espacio de pila' se debe  a estas dos líneas combinadas:

Citar
...
Reves = Reves & Mid(TxtNombre.Text, i, 1)
...
TxtNombre.Text = StrConv(Reves, vbProperCase)

Ya que provocan que el evento Change ocurra infinitas veces (hasta que se acaba el espacio de la pila).


DiabloRojo.

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #10 en: Martes 2 de Agosto de 2005, 01:08 »
0
Otra forma pero en el evento KeyPress:

Código: Text
  1.  
  2. Private Sub Text1_KeyPress(KeyAscii As Integer)
  3.    Dim TextAnt As String ' Almacena el contenido "actual" del Textbox
  4.    Dim Letra As String ' Para chequear el último caracter que hay en el texto
  5.    '
  6.    TextAnt = Text1.Text
  7.    letra = Right(TextAnt, 1)
  8.    If ((letra = " ") Or (Len(TextAnt) = 0)) Then
  9.       KeyAscii = Asc(UCase(Chr(KeyAscii)))
  10.    End If
  11. End Sub
  12.  
  13.  

Esta forma de lograr que la primera letra de cada palabra sea mayúscula me gusta más ya que no toma el texto completo para modificarlo , cada vez que ocurre el evento (como sucede si se usa la función StrConv en el evento Change).

Saludos,

DiabloRojo.

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Primer Caracter En Mayuscula De Un String
« Respuesta #11 en: Viernes 5 de Agosto de 2005, 14:54 »
0
uhmm... si cpmario el colocarlo en el LostFocus es una buena idea, ni lo pense asi, disculpas.

Muy buen código jodijo5 funciona a la perfección compadre, corto y eficiente.

Y mis felicitaciones a DiabloRojo también, no solo por un código que realiza estupendamente el trabajo sino por 2 formas de hacerlo.

Perdon por el retraso, a todos los programadores de este hilo, mis más sinceras y agradecidas felicitaciones (a todos) por igual, solo hasta ahora es que pude ver lo de este TextBox y pasar por aqui, en el peor de los casos haberlo dejado asi, sin la forma de cambiar o ajustar esto en el string, pero gracias a todos ustedes este TextBox podrá hacer lo pensado.

Muchas gracias, es una muy buena comunidad de programadores.

THE END.
Si esto es Leído por accidente, induzca al vomito