https://foro.gambas-es.org/viewtopic.php?f=4&t=2551
-----------------------------------
aratar79
Jueves, 23 Agosto 2012, 15:22

Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
Hola a todos otra vez, me estoy volviendo un poco loco con esto de los eventos, es lo que tiene ser novato, ahora empiezo a entender todo esto de objetos eventos metodos.... Tengo un formulario en el que quiero calcular el coste de un ingrediente, si utilizo un textbox todo es muy facil en el evento change le digo que me divida precio por unidades y lo multiplique por cantidad y todo bien, pero he visto que hay unos valuebox que son para tipo numerico y me parecia mas correcto usar el valuebox que el textbox, pero cual es mi sorpresa que no hay tal evento change, alguien me puede explicar la equivalencia si es que la hay con el textbox... Muchas Gracias!

Saludos  :mryellow:


-----------------------------------
jsbsan
Viernes, 24 Agosto 2012, 00:09

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
Te podia valer el evento keypress()

Usalo asi:

[code linenumbers=false syntax=gambas]Public Sub ValueBoxCantidad_KeyPress()

 If Key.code = Key.enter Or Key.code = Key.return Then
    operacion = ValueBoxPrecio.Value * ValueBoxCantidad.value
    LabelResultado.Text = Format(operacion, "#,.##")
    ValueBoxPrecio.SetFocus
  Endif

End[/code]

De dejo el ejemplo completo, para que veas como funciona.

Para más información: [url=http://www.gambasdoc.org/help/comp/gb.qt4/control/.keypress?es&v3]http://www.gambasdoc.org/help/comp/gb.qt4/control/.keypress?es&v3


-----------------------------------
aratar79
Viernes, 24 Agosto 2012, 01:46

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
1000 Gracias jsban, no solo por contestar y ayudarme con mi duda sino que tambien te has avanzado a mi siguiente pregunta, y si no fuera poco no ejemplo para descargarme, muchas gracias.
saludos a todos. :))


-----------------------------------
aratar79
Viernes, 24 Agosto 2012, 12:06

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
Buenas otra vez, al final lo he dejado así, una función en el modulo:
[code linenumbers=false syntax=gambas]
Public Sub CalculCosteIngrediente(precio As Float, unidades As Integer, cantidad As Integer) As Float
  
  Return ((precio / unidades) * cantidad)
  
  
End
[/code]
y en el formulario en el evento keypress del objeto como me dijiste:

[code linenumbers=false syntax=gambas]
Public Sub VBcant5_KeyPress()

  If Key.code = Key.enter Or Key.code = Key.return Or Key.code = Key.Tab Then
    
      VBCost.value5 = ModCon.CalculCosteIngrediente(VBPrec5.Value, VBUnid5.Value, VBcant5.value)
      cmbIngre6.SetFocus
    
  Endif

End
[/code]

Funciona perfercto muchas gracias.
saludos.


-----------------------------------
Shell
Viernes, 24 Agosto 2012, 12:34

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
aratar79:

Mas que Public Sub, es Public Function. ;-)

La función devuelve un valor y el procedimiento ejecuta su contenido.

Saludos.


-----------------------------------
aratar79
Viernes, 24 Agosto 2012, 14:21

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
Ups.. ok otra cosa que no acabo de tener claro, gracias por la acaración

mejor asi:
[code linenumbers=false syntax=gambas]
Public Funtion CalculCosteIngrediente(precio As Float, unidades As Integer, cantidad As Integer) As Float
  
  Try Return ((precio / unidades) * cantidad)
    
End
[/code]

saludos.


-----------------------------------
jsbsan
Viernes, 24 Agosto 2012, 19:30

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
[b]Shell:[/b]

[quote]Mas que Public Sub, es Public Function.

La función devuelve un valor y el procedimiento ejecuta su contenido.[/quote]

Totalmente de acuerdo, y asi queda mucho mas caro el uso de Sub y Function. 

Pero Gambas, no se por que, admite que pongas Sub, y que funcione como una funcion...será porque gambas no es un lenguaje muy "estricto".


[b]aratar79:[/b]
[code linenumbers=false syntax=gambas]
  Try Return ((precio / unidades) * cantidad)[/code]
He visto que pones [b]Try[/b] en la orden, seguramente porque cuando unidades sea 0 te da un error y te echa del programa....

Deberías de "tratar" eso error, e indicar al usuario que esta haciendo algo mal o que le falta algún dato.... los [b]try[/b] son peligrosos si los dejas sin tratar, ya que te pueden "ocultar" problemas que tenga tu código o algoritmo... 

[code linenumbers=false syntax=gambas]
  Try Return ((precio / unidades) * cantidad)

  If Error Then
    'se ha producido un error
    If unidades = 0 Then
      ' las unidades son 0, !!error!! debido entro 0
      Message.Error("Debes de introducir un valor en unidades") 'este mensaje es opcional para que se lo muestres al usuario"

      Return

    Else
      'este mensaje te aparecera en la consola, es que para el programador sepa que ocurre algo raro...
      Print "Funcion cuantia: Se ha producido un error, y no es debido a que se ha dividido entre 0"
    Endif
  Endif

End[/code]

A lo mejor en tu caso, es un poco exagerado lo que te digo.... pero es malo acostumbrarse a usar [b]try[/b] sin "tratarlo", porque luego no hay forma de encontrar los errores.


Saludos


-----------------------------------
Shell
Sabado, 25 Agosto 2012, 00:59

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
Julio:

[quote user="jsbsan" post="14524"][b]Shell:[/b]

[quote]Mas que Public Sub, es Public Function.

La función devuelve un valor y el procedimiento ejecuta su contenido.[/quote]

Totalmente de acuerdo, y asi queda mucho mas caro el uso de Sub y Function. 

Pero Gambas, no se por que, admite que pongas Sub, y que funcione como una funcion...será porque gambas no es un lenguaje muy "estricto".

[/quote]

Quizás es que los dos son procedimientos.Solo que uno es Sub y el otro es Function.
Tienen algo común entre ellos.No usamos una palabra que diga Procedure.

Imagina añadir. Private Procedure Sub()...  :smile: 

Si Fabian lee esto, se va reír mucho, por que como el decía,puede ser un
error llamarlo así.

Cuando estuve remirando un libro de Turbo Pascal, me parece que no encontré
Function como tal por ningún lado, todo era procedimientos con o sin parámetros, lo que me dejo un poco perplejo.

Como tal la palabra procedimiento "Procedure" en Pascal engloba los dos.
En vez de decir Subrutina, nos acostumbramos a decir a veces
procedimiento.No nos damos cuenta pero es algo que nos preguntamos cuando llevamos un tiempo
con el lenguaje.


aratar79:

Es bueno que sepas el alcance que puede tener, ya sea una función o un procedimiento (Sub) si le añades Public o Private.
Cuando comenzamos a programar usamos el mismo formulario principal,en el escribimos todo el código.

Luego vamos necesitando mas formularios y en vez de tener nuestras funciones repetidas en mas de un formulario,
usamos un modulo estándar. En el declaramos las funciones o procedimientos como publicas para hacerlas
comunes a los dos formularios desde los que llamaremos al modulo.

Ve probando cosas y viendo como cambia. :-)

Saludos.


-----------------------------------
aratar79
Sabado, 25 Agosto 2012, 01:49

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
Gracias chicos, estoy anonadado con la comunidad, la verdad es que yo empece ya hace 22 anos con un MSX a programar porque me gustaba mas que jugar con la NES que ya era una cosa para mi hermano pequeño, y al encontrar gambas me ha hecho recordar lo bien que lo pasaba programando asi que he decidico aprender haciendome una aplicacion que me ayude en mi trabajo diario, que es en la cocina, la verdad que estoy gratamente sorprendido con todo esto, habia probado con otros lenguajes como realBasic pero esto me supera, otra vez gracias.

A lo del control de errores si es cierto, solo que no quiero que mi aplicacion me avise constantemente de que me estoy equivocando rollo, "Estas seguro de que estas seguro de estar seguro"...
gracias a todos. Saludos


-----------------------------------
vuott
Jueves, 20 Noviembre 2014, 02:13

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
...un simple estratagema te permite de hacerlo:    :roll: 

http://www.gambas-it.org/wiki/index.php?title=Utilizzare_l%27evento_Change%28%29_in_un_ValueBox


-----------------------------------
Shell
Jueves, 20 Noviembre 2014, 20:02

Re: Hay Un Equivalente Del Evento Change Del Textbox En Valuebox
-----------------------------------
Hola Vuott.

A modo de sugerencia.

Sería muy interesante que al mostrar el código en vuestra wiki, se pudiera consultar las instrucciones o algunas de estas en la ayuda de Gambas.
De un color distinto y al hacer click en ella te llevase a la ayuda. ( Cosa de costumbres ).  :roll: 

Supongo que es distinto. Voy a comprobar una cosa en la comunidad Italiana y añado aquí...
Es cosa de cada pagina.

Saludos


