Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

TextBox. Limitar el número de caracteres y evitar concatenar
#1

Buenas!.

Imaginar que necesitáis escribir una serie de valores en una caja de texto o un valuebox, tantas veces como quieran. Pero no quieren
que al entrar el nuevo texto o valor se mezcle con el que ya existía en la caja de texto. ¿ No es algo que suele ocurrir ?.
Hice un ejemplo sencillo, que al principio se me volvió complicado.

[Imagen: eVtkERY.png]

¿ Qué pasaría si quisieras escribir un nuevo número ?. ( Aunque sea un textbox ).
Tendrías que borrar uno a uno, o seleccionar todo el contenido y borrarlo y luego escribir el nuevo número.

En principio he puesto un máximo de tres dígitos. La verdadera idea sería que se pueda escribir cualquier cosa sin que ocurra lo de arriba. Rolleyes
Pero por ahora solo lo hice con tres caracteres o tres dígitos.

GAMBAS
  1. Const DIGITOSMAXIMOS As Integer = 3
  2.  
  3. Public Sub txbDigitos_KeyPress()
  4.  
  5.   If Len(Last.text) < DIGITOSMAXIMOS Then
  6.     If Not IsDigit(Key.Text) Then Stop Event
  7.   Else
  8.     Stop Event
  9.     Last.text = ""
  10.     Last.insert(Key.text)
  11.  
  12.  
  13.  
  14. Public Sub Form_Open()
  15.  
  16.   Me.Title = "DÍGITOS MÁXIMOS"
  17.   Label1.Text = "Número máximo de carateres: " & Str(DIGITOSMAXIMOS)
  18.  




¿ Es posible usar un evento más y solucionarlo de otra forma ?. Keyrelease o Change, quizás eso lo complique más.

Saludos


Archivos adjuntos
.gz DigitosMaximos-0.0.2.tar.gz Tamaño: 11.93 KB  Descargas: 0

"El buen perfume en frasco pequeño se vende"
[-] Los siguientes 1 usuarios dice gracias a Shell por este post:
  • alberto-moyano
    ¡Gracias!
#2

Y por qué no le añadí esto al principio ?.

GAMBAS
  1. Public Sub txbDigitos_KeyPress()
  2.  
  3.   'Y con esto parece que sobra todo lo anterior.
  4.   If Key.Code = Key.Enter Or Key.code = Key.Return Then Last.text = ""
  5.  



A veces no entiendo por que me complico tanto y no planteo mejor la solución. No es algo sencillo.
En realidad este ejemplo salió de otro que tengo que revisar y mostrar.

Como es lógico la caja de texto siempre va a tener el foco.

Creo que no tenemos un videotutorial o tutorial que explique bien esos eventos tan importantes que usamos y a veces nos liamos como
es el KeyPress,  KeyRelease, Change.

Si, sabemos que KeyPress, es cuando presionamos la tecla. El KeyRelease cuando la tecla es liberada o levantada. Y el Change, cuando cambia el contenido.
Pero eso es lo fácil, aplicarlo es otra cosa. He aplicado los dos primeros siempre al  control de movimiento de un personaje, bloque que lleva el jugador.
Ejemplo, la raqueta del Pong.

Disculpar la tontería del ejemplo que con algo de tiempo y más pensarlo se soluciona. El problema es el tiempo que te llevas para una tontería. Sad
A veces es frustrante.

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!
#3

No entiendo muy bien. ¿Quieres mantener esos tres (o los que sea) números teclee el usuario lo que teclee o quieres que se borren de golpe si el usuario borra o qué?

Saludos

No podemos regresar
    ¡Gracias!
#4

(20-01-2023, 11:38)Shordi escribió:  No entiendo muy bien. ¿Quieres mantener esos tres (o los que sea) números teclee el usuario lo que teclee o quieres que se borren de golpe si el usuario borra o qué?

Perdona Shordi, pero se me fue la mente.

La idea es hacer una operación constantemente. Insertar un dato, un número por ejemplo, se elimina y se puede escribir otro, pero que no se mezcle
con el anterior que esta en la caja de texto. Ya ves que era sencillo.

Esto comenzó con una hoja de cálculo que tengo que utilizar la función "Solver", el ejercicio usa aún la peseta, entonce me puse a crear un ejemplo
en Gambas que me hiciera la conversión. ( Cosa que se puede hacer en Calc, en otra hoja ). Y de este ejemplo salió este.
Como ves, la idea era insertar un valor en pesetas, convertirlo a euros y así hasta terminar todos los valores a convertir.

Ejemplo que a lo mejor tengo que cambiar. Es sencillo. Como lo vi parecido, hice el de la caja de texto.

[Imagen: 0jjkMdv.png]

A veces se obsesiona uno con hacer las cosas de la manera más complicada, o que tiene interés de hacerlo de una forma distinta,
cuando no funciona a la primera, puedes pensar y si uso otro evento que dispone el componente.

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)