Comunidad Gambas-es
Convertir de pesetas a euros - 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: Convertir de pesetas a euros (/thread-1179.html)



Convertir de pesetas a euros - Shell - 20-01-2023

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


RE: Convertir de pesetas a euros - Shordi - 20-01-2023

Yo lo haría así:
Código:
' Gambas class file

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
      vlbPesetas.SelectAll ''seleccionamos todo lo tecleado sin borrarlo. A la siguiente pulsación se eliminará.
    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

Saludos


RE: Convertir de pesetas a euros - Shell - 20-01-2023

(20-01-2023, 20:38)Shordi escribió: Yo lo haría así:

Buena opción, eliminas la variable boolean y el evento Keypress. Conocía el método SelectAll, lo que no imaginaba es que iba
a crear esa posibilidad. Lo veía más para selección para copiar, pegar.

Gracias.