Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable


Subject: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Buenas tardes a todos;

Me esta pasando algo extraño y no encuentro la solución.
Al ejecutar el programa dentro de gambas3 no tengo ningún problema, pero al crear el ejecutable y ejecutarlo me esta dando diferentes resultados, les explico:

dice así:

Dim uno As Intreger
Dim dos As Intreger

If Key.code = Key["1"] Then
uno = Val(credito1.Text)
uno = uno + 1
credito1.text = uno
End If
If Key.code = Key["2"] Then
dos = Val(credito2.Text)
dos = dos + 1
credito2.text = dos
End If

En gambas me corre bien, cada vez que aprieto la tecla "1" me suma 1 y cuando aprieto la tecla "2" me suma 2 pero en el ejecutable me hace todo de 2 en 2, cada vez que aprieto las teclas "1" o "2" me suma 2. Luego hice una prueba, en vez de sumar 1 lo puse a sumar 0.5 y para mi sorpresa en en gambas me sumaba 0.5 pero en el ejecutable me sumaba 1.

Alguien que me pueda decir que puede estar pasando, porque ya he buscado por todos lados y no encuentro que puede ser.

Se le agradece la ayuda.


P.D.: estoy usando gambas3 en Ubuntu 15.04

Last edited by sandor on Sunday, 04 October 2015, 20:55; edited 1 time in total
Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Pon un retardo así:

credito1.text = uno
wait 0.1

y en lugar de usar el evento keypress, usa el keyrelease.

Lo que te pasa es que en el ejecutable todo va más rápido y le da tiempo de procesar el evento dos veces, supongo.

Saludos.

Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
shordi escribió: [Ver mensaje]
Pon un retardo así:

credito1.text = uno
wait 0.1

y en lugar de usar el evento keypress, usa el keyrelease.

Lo que te pasa es que en el ejecutable todo va más rápido y le da tiempo de procesar el evento dos veces, supongo.

Saludos.


Gracias por tu pronta respuesta.

Utilizando el wait me percate que no se sumaba dos veces, lo que hace es como si yo apretara la tecla dos veces porque viendolo ahora en camara lenta (por el uso de Wait 1) me di cuenta que ponia el 1 y luego el 2.

Hay algo que no les dije y puede ser que esté dando problemas, los textbox los tengo dentro de un panel.

Alguna otra idea? se le agradece su respuesta.

P.D.: lo puse con keyrelease() y paso lo mismo.

Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Cambiando - como ha dicho shordi - el evento a Form_KeyRelease(), a mi el tu codigo funciona muy bien, tambien en el ejecutable.

Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Citar:

Alguna otra idea? se le agradece su respuesta.

P.D.: lo puse con keyrelease() y paso lo mismo.
Sube tu proyecto, o una versión simplificada donde se produzca el error. Si no, no hay nada que podamos decirte.

Saludos.

Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Public Sub Form_keyrelease()

If Key.code = Key["3"] Then
TB0.text = Val(TB0.text) + 1
Endif

End

Solo poniendo el código anterior me esta saliendo de dos en dos.

TB0 lo he puesto como textbox, como label y como lo que sea y es igual.

Cada vez que aprieto la tecla "3" me sale esto:
2
4
6
8
10..........

y ahora me sale, no solo cuando corro el ejecutable, sino que en el mismo gambas.


ya no se que será.

y no es que suma dos en vez de uno sino que parece como si se apretara la tecla dos veces, se nota cuando le pongo un wait, al apreetar la tecla "3" el coloca el 1 y lugo el 2. sin el wait da la sensacion que va de dos en dos.

Quien sabe que pueda estar pasando. le agradeceria muchisimo una respuesta. Me ha atrasado mucho este problemita.

Gracias y Saludos.

Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
El problema es que cambias el valor de tu control dos veces: Una vez al pulsar la tecla, otra al soltar la tecla. Cuando la pulsas almacenas el valor de la tecla pulsada, evidentemente, cuando la sueltas le sumas uno.
Si quieres aumentar o disminuir la cantidad del textbox, utiliza teclas que no impriman ni cambien el valor del control, por ejemplo, las teclas de arriba y abajo.


Public Sub TBO_KeyRelease()

Select Case key.code
case Key.Up
TextBox1.text = Val(TextBox1.text) + 1
case Key.Down
TextBox1.text = Val(TextBox1.text) - 1
End Case

End



Si lo que quieres es que se sume uno o dos o tres, según el dígito que teclees, crea un control valuebox aparte donde el usuario teclee lo que quiere aumentar y modifica los otros según eso. Pero es muy mala política el modificar el contenido de un control desde un evento disparado por el mismo control. Eso vuelve a disparar eventos que pueden no estar previstos o puede producir efectos secundarios como estos.

Por cierto: No uses Form_Keyrelease. Ese evento se propaga a todos los controles del form y te ejecutaría lo de sumar uno en todos los campos, no sólo en el que te interesa.

Last edited by shordi on Tuesday, 13 October 2015, 17:02; edited 2 times in total
Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Gracias shordi y todos los que trataron de ayudarme.


Shordi, el keyrelease() solo se ejecuta cuando sueltas la tecla y el keypress() cuando se aprieta.

Ya solucione el problema después de tantas horas machacándome la cabeza.

Elimine el componente gb.gui y habilité el componente gb.qt4 y problema resuelto.

Gracias y Saludos.

Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Citar:
Shordi, el keyrelease() solo se ejecuta cuando sueltas la tecla y el keypress() cuando se aprieta.


Evidentemente, pero todo evento tiene DOS comportamientos, el pre-establecido para esa tecla y el que tú programes (o no) en tu código (En realidad lo que haces es reescribir el evento keypress pre-establecido del control).
El pulsar una tecla genera un evento keypress(), lo programes tú o no (si no fuese así no pasaría nada al pulsar teclas para las que no hayas escrito evento)
El comportamiento por defecto de dicho evento, en el caso de textbox y controles similares, es cambiar el valor del control y escribir la tecla en la pantalla. Tú puedes anular dicho comportamiento utilizando STOP EVENT en tu código y sustituyendo el comportamiento por el tuyo, pero si tu no programas el evento keypress(), eso no quiere decir que no se ejecute, quiere decir que se acepta el comportamiento por defecto.

Por tanto, con tu código, al pulsar la tecla cambias el valor del textbox y al soltarla lo vuelves a cambiar. Lo cambias dos veces. De ahí el error.

Saludos.

Last edited by shordi on Tuesday, 13 October 2015, 19:01; edited 1 time in total
Profile PM  
Subject: Re: Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El Ejecutable
Te entiendo Shordi pero mi caso no es ese. En mi textbox no se puede escribir solo cambia cuando se aprieta la tecla indicada.

Gracias por la aclaración.

Solo cambiando el componente de gb.gui a gb.qt4 dejo de molestarme y comenzo hacer lo que debía hacer desde el principio.

Hace 20 años que programo en VBasic, pero hace un par de meses que comence con gambas y todavía hay cosas de su funcionamiento que estoy aprendiendo. Gracias a ustedes ustedes me esta siendo mas fácil.

Gracias y Saludos.

Profile PM  

Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1097s (PHP: -40% SQL: 140%)
SQL queries: 25 - Debug Off - GZIP Enabled