Shell 20-01-2023, 20:10
Buenas!.

Código:

Código:
Const PTATOEURO As Float = 166.386

Public Sub Form_Open()

  Me.Title = "Conversor de ptas a euros"

End

Public Sub vlbPesetas_KeyPress()

  If Key.code = Key.enter Or Key.code = Key.Return Then
    'Si se ha pulsado la tecla enter o la tecla return
    If vlbPesetas.Value > 0 Then
      'Si el valor es mayor que cero realizar la conversión
      lblEuros.Text = Str(Round(vlbPesetas.Value / PTATOEURO, -2)) & " €"
    Else
      'En caso contrario poner el valor a cero
      vlbPesetas.Value = 0
    Endif
  Endif

End

Os muestro el problema. Cuando escribo una cantidad en el valuebox por primera vez.

[Imagen: LD20xZ3.png]

Pero si quiero realizar otra operación e intento escribir en el valuebox...
Por ejemplo cuanto son 60 pesetas en euros, ocurre esto con el código de arriba.

[Imagen: KMJWl4A.png]

Entonces tuve que usar los dos eventos. Keypress y KeyRelease.

Código:
Const PTATOEURO As Float = 166.386

Private conversion As Boolean

Public Sub Form_Open()

  Me.Title = "Conversor de ptas a euros"

End

Public Sub vlbPesetas_KeyRelease()

  If Key.code = Key.enter Or Key.code = Key.Return Then
    'Si se ha levantado la tecla enter o la tecla return
    If vlbPesetas.Value > 0 Then
      'Si el valor es mayor que cero realizar la conversión
      lblEuros.Text = Str(Round(vlbPesetas.Value / PTATOEURO, -2)) & " €"
      'Se ha realizado la conversión
      conversion = True
    Else
      vlbPesetas.Value = 0
    Endif
  Endif

End

Public Sub vlbPesetas_KeyPress()

  'Al volver a pulsar una tecla
  'Se comprueba si se ha realizado la conversión
  If conversion Then
    'Ponemos el valor del valuebox a cero
    vlbPesetas.Value = 0
    'La conversión aun no se ha realizado
    conversion = False
  Endif

End

De este problema salió el ejemplo del TextBox. En parte es casi el mismo problema.
En el caso del valuebox no me interesaba que se borrase la cantidad en euros al pulsar la tecla Return o Enter,
quería que se mostrase y quedase ahí para luego al volver a escribir una nueva cantidad, pulsando una tecla
se borrase la cantidad anterior y pudiera escribir la nueva. Y así continuamente.

¿ Es posible hacerlo de otra forma ?. ¿ Es la forma correcta usando los dos eventos ?.

Añadí hasta un Timer, para que pasado un tiempo se borrase la cantidad. Pero no fue necesario.

En parte lo curioso del código es que parece invertido. Keypress no comprueba la tecla pulsada.
Y en este caso es después de haberla pulsado, con KeyRelease.


Saludos
Archivos adjuntos
.gz
ConvertirPesetasAEurosGrafico-0.0.1.tar.gz (Tamaño: 12.18 KB Descargas: 2)
Shordi 20-01-2023, 11:56
No me reconoce la contraseña de siempre. ¿Os pasa a vosotros?
Me da en la nariz que puede ser algo relacionado con esos cambios que están haciendo en el servidor de gambaswiki...

Saludos
Shell 20-01-2023, 01:08
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)
Páginas (567):    1 229 230 231 232 233 567   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 295
Último miembro: ncofre98
Temas del foro: 1,749
Mensajes del foro: 9,078
Últimos temas
Feliz Navidad a todos los...
Foro: General
Último mensaje por: guizans, Ayer, 20:27
Respuestas: 4 - Vistas: 130
Apartado WEB
Foro: WebApp/WebForms
Último mensaje por: jackrobot, 27-12-2025, 15:27
Respuestas: 11 - Vistas: 8,200
Problemas con las interru...
Foro: General
Último mensaje por: guizans, 14-12-2025, 18:40
Respuestas: 5 - Vistas: 343
Scrolling un ScrollArea
Foro: Controles/Librerías/Componentes
Último mensaje por: Shordi, 12-12-2025, 07:24
Respuestas: 5 - Vistas: 332
Ordenar en un TableView
Foro: General
Último mensaje por: guizans, 08-12-2025, 23:06
Respuestas: 9 - Vistas: 1,014
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.