gambafeliz   10-05-2021, 12:26
#1
Hola

Estoy haciendo una mini calculadora, se que podría hacerla con TextBox pero estoy usando ValueBox y todo va bien y funciona pero tengo que hacer un parche para que funcione cuando resto.

Yo asigno cada Text de los Button a Eval() pero mi problema visual es que todo bien con (*/+) pero cuando (-) me sale un número negativo y tengo que convertirlo a positivo para que todo funcione bien.

¿Es posible evitar que ValueBox use (-) de algún modo o voy a tener que usar TextBox para resolver todo y listo?

========== Solución ===============================

La solución es la da Shordi. ValueBox tiene integrado el signo negativo al pulsarlo dentro de su caja. Por lo tanto es imposible tener números positivos únicamente con este control. Pero con el código de Shordi captura el signo como si de un TextBox se tratara.
Última modificación: 12-05-2021, 16:57 por gambafeliz.
tincho   10-05-2021, 22:05
#2
(10-05-2021, 12:26)gambafeliz escribió: ¿Es posible evitar que ValueBox use (-) de algún modo o voy a tener que usar TextBox para resolver todo y listo?

Creo que respondes solo. Smile Eval() trabaja con cadenas de texto que evalúa no con números.
Fíjate en este tema:
https://gambas-es.org/showthread.php?tid=385
Donde hice una calculadora justamente con la intención de aprender el uso de Eval() seguramente te resulte útil.
Saludos.
Última modificación: 10-05-2021, 22:20 por tincho.

1 Saludo.
gambafeliz   11-05-2021, 07:43
#3
(10-05-2021, 22:05)tincho escribió:
(10-05-2021, 12:26)gambafeliz escribió: ¿Es posible evitar que ValueBox use (-) de algún modo o voy a tener que usar TextBox para resolver todo y listo?

Creo que respondes solo. Smile Eval() trabaja con cadenas de texto que evalúa no con números.

No se como puedes saber que tengo algún problema de Eval(), en realidad no lo tengo. El problema esta en ValueBox que aunque esta bien que evite que los usuarios usen cualquier cosa para escribir y así hace. Pero en mi caso es una pequeña calculadora super básica que no admite números negativos y ese es el problema que la caja de ValueBox, si lo admite. Y ese es el problema. Que ValueBox mete visualmente el negativo y después yo lo tengo que corregir.

En resumen, hago la misma pregunta. Es posible capturar la entrada del signo negativo en la caja para que no la pueda ni pintar y tratar. Es una caja para número solo y únicamente positivos.

(10-05-2021, 22:05)tincho escribió: Fíjate en este tema:
https://gambas-es.org/showthread.php?tid=385
Donde hice una calculadora justamente con la intención de aprender el uso de Eval() seguramente te resulte útil.
Saludos.
Gracias lo miraré aunque sospecho que no me es necesario

Mil gracias Smile
tincho   11-05-2021, 21:44
#4
(11-05-2021, 07:43)gambafeliz escribió: Es posible capturar la entrada del signo negativo en la caja para que no la pueda ni pintar y tratar

En el valuebox no se como se hace porque el signo menos no es detectado por el evento keypress pero te dejo este ejemplo con un textbox.
Código:
Public Sub TextBox1_KeyPress()

  Select Key.Text
    Case "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ","
    Case Else
      Stop Event
  End Select
End
Saludos.

1 Saludo.
gambafeliz   12-05-2021, 08:36
#5
Gracias tincho

Un código muy parecido he utilizado al final en mi TextBox.

Pero lo de ValueBox no te lo cuento lo afirmo, no es posible quitar el signo (-).

Por otra parte si te fijas lo que poder tener el signo (-) o no, debería ser una mejora en las propiedades de ValueBox, no siempre debería ser signos + / - también debería ser optativo.

Gracias, joven.
tincho   12-05-2021, 09:15
#6
(12-05-2021, 08:36)gambafeliz escribió: Por otra parte si te fijas lo que poder tener el signo (-) o no, debería ser una mejora en las propiedades de ValueBox,

Si, tienes razón, debería poder cambiarse eso en las propiedades. Me fije en la versión 3.16 por si acaso y tampoco tiene algo que diga "solo valores positivos" o algo por el estilo.
Tal vez sea interesante que lo comentes en el bugtracker como una mejora. Yo una vez pedí que agregaran la propiedad de alineación en el valuebox y lo agregaron.
Saludos.

1 Saludo.
Shordi   12-05-2021, 10:09
#7
Pasaba por aquí y vi luz...
Prueba ésto:

Código:
Private obs As Observer

Public Sub form_Open()
    
    obs = New Observer(ValueBox1.proxy) As "txtbox"
    
End

Public Sub txtbox_Keypress()


    If Key.Code = Key["-"] Then Stop Event

End

El geshi también me odia...
Última modificación: 12-05-2021, 10:10 por Shordi.

No podemos regresar
gambafeliz   12-05-2021, 10:57
#8
Dios me ha contestado Smile

Oye me parto con tu código en referencia a tu último código colgado por aquí, le estas cogiendo gustillo a proxy observo yo.

No lo he probado ni nada pero si funciona, como sabes me quito el sombrero, Sr.

Cry
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.