Shell   20-01-2023, 01:08
#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.

Código:
Const DIGITOSMAXIMOS As Integer = 3

Public Sub txbDigitos_KeyPress()

  If Len(Last.text) < DIGITOSMAXIMOS Then
    If Not IsDigit(Key.Text) Then Stop Event
  Else
    Stop Event
    Last.text = ""
    Last.insert(Key.text)
  Endif

End


Public Sub Form_Open()

  Me.Title = "DÍGITOS MÁXIMOS"
  Label1.Text = "Número máximo de carateres: " & Str(DIGITOSMAXIMOS)

End


¿ 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 conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   20-01-2023, 11:20
#2
Y por qué no le añadí esto al principio ?.

Código:
Public Sub txbDigitos_KeyPress()

  'Y con esto parece que sobra todo lo anterior.
  If Key.Code = Key.Enter Or Key.code = Key.Return Then Last.text = ""

End

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.
Última modificación: 20-01-2023, 11:45 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   20-01-2023, 11:38
#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
Shell   20-01-2023, 11:56
#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 conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.