Comunidad Gambas-es
Escribir caracter uno a uno en un TextBox - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Escribir caracter uno a uno en un TextBox (/thread-1149.html)



Escribir caracter uno a uno en un TextBox - Shell - 28-12-2022

Buenas!.

Si dejan pulsada una tecla no se repite esta y no deja escribir en la caja de texto.
Hay que volver a levantar el dedo del teclado ( Rolleyes ) y volver a escribir.

Código:
Private masdeuncaracter As Boolean

Public Sub Form_Open()

  With TextBox1
    .Font = Font["Mono Noto,Bold, 24"]
  End With

End

Public Sub TextBox1_Change()

  If Len(TextBox1.Text) >= 1 Then masdeuncaracter = True

End

Public Sub TextBox1_KeyPress()

  If masdeuncaracter Then
    Stop Event
  Else
    TextBox1.Insert(Upper(Key.Text))
    Stop Event
  Endif

End

Public Sub TextBox1_KeyRelease()

  masdeuncaracter = False

End

Claro que....je, je..si compruebo la longitud de la caja de texto, en realidad después de una letra siempre deberá ser la condición a True.
Uy que tarde.... Tongue

Saludos


RE: Escribir caracter uno a uno en un TextBox - Shordi - 29-12-2022

No me entero de na...


RE: Escribir caracter uno a uno en un TextBox - Shell - 29-12-2022

(29-12-2022, 14:06)Shordi escribió: No me entero de na...

Big Grin

Idea principal:  Escribir en un TextBox y permitir solo un carácter, que no muestre "aaaaaaa" (por ejemplo) si dejamos pulsado.
Que quede en minúscula o mayúscula da igual.

Lo que digo al final ...(si es que me cito hasta mi mismo. Espero que no se produzca una paradoja temporal).
 
Cita:Claro que....je, je..si compruebo la longitud de la caja de texto, en realidad después de una letra siempre deberá ser la condición a True.

Es que es normal, es así. La condición de la variable masdeuncaracter va cambiando de valor. Ya que al levantar el dedo de la tecla vuelve
la condición a ser falsa. Pero esto es otra historia.

Lo que realmente si se puede es ver si sobran procedimientos, optimización.

Evento Change: Comprueba que la longitud sea mayor de 1 o igual a 1.
Evento KeyPress: Si se cumple la condición, no dejes escribir más de un caracter, en caso contrario convierte el carácter a mayúscula.
Evento KeyRelease: Al dejar de pulsar una tecla, se cambia el estado de la variable masdeuncaracter a false, permitiendo volver a escribir otra vez, un solo carácter más.

Saludos