Shell 21-01-2023, 12:08
Buenas!.

Tengo ese error con un ejemplo sencillo y no sé el motivo.

Pizarra es un control DrawingArea que existe en el formulario.

Código:
Private untest As Test

Public Sub Form_Open()

  untest = New Test(Pizarra)

End

Y la clase Test.

Código:
Property areadibujo As DrawingArea Use hareadibujo
Private suobservador As New Observer

Public Sub _new(darea As DrawingArea)

  Me.areadibujo = darea
  suobservador = New Observer(Me.areadibujo) As "Vigilante"

End


Public Sub Vigilante_Draw()

  DibujarCuadrado()

End

Public Sub DibujarCuadrado()

  Paint.Background = Color.White
  Paint.Rectangle(128, 128, 40, 40)
  Paint.Fill

End

Cuando elimino el observador ademas de no hacer nada el ejemplo, deja de dar el error.
La clase Test quedaría así, no haría nada.

Código:
Property areadibujo As DrawingArea Use hareadibujo
'Private suobservador As New Observer

Public Sub _new(darea As DrawingArea)

  Me.areadibujo = darea
  'suobservador = New Observer(Me.areadibujo) As "Vigilante"

End


' Public Sub Vigilante_Draw()
'
'   DibujarCuadrado()
'
' End

Public Sub DibujarCuadrado()

  Paint.Background = Color.White
  Paint.Rectangle(128, 128, 40, 40)
  Paint.Fill

End

Entiendo lo que dice, con falta de argumentos, pero es que son los que son. Uno. Confused

Saludos
Archivos adjuntos
.gz
TestDrawingObjeto-0.0.1.tar.gz (Tamaño: 11.79 KB Descargas: 0)
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
Páginas (560):    1 222 223 224 225 226 560   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 288
Último miembro: shoUsho
Temas del foro: 1,729
Mensajes del foro: 8,985
Últimos temas
Paren...WAIT !!!
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: guizans, 25-08-2025, 14:49
Respuestas: 3 - Vistas: 420
GambOS
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:58
Respuestas: 0 - Vistas: 284
Gambas y Wayland
Foro: General
Último mensaje por: guizans, 20-08-2025, 13:56
Respuestas: 6 - Vistas: 567
Odio a gb.Report
Foro: General
Último mensaje por: guizans, 19-08-2025, 10:40
Respuestas: 8 - Vistas: 921
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.