Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Al Sumar El Valor Numerico De Un Textbox Al Momento De Correr El E...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 



 
última edición por sandor el Domingo, 04 Octobre 2015, 20:55; editado 1 vez 
sandor - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
sandor - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
sandor - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
No podemos regresar
 
última edición por shordi el Martes, 13 Octobre 2015, 17:02; editado 2 veces 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
sandor - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 




===================
No podemos regresar
 
última edición por shordi el Martes, 13 Octobre 2015, 19:01; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
sandor - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problema Con La Asistencia-ayuda Al Moment... santijav General 4 Jueves, 29 Marzo 2012, 19:49 Ver último mensaje
jguardon
No hay nuevos mensajes Suma De Decimales Y El Valor De Un Textbox desoljor Aplicaciones/Fragmentos de Código 12 Domingo, 13 Septiembre 2015, 20:00 Ver último mensaje
shordi
No hay nuevos mensajes Problema Al Correr Un Script Con Shell obedlink General 2 Domingo, 05 Junio 2016, 11:36 Ver último mensaje
shordi
No hay nuevos mensajes Problemas Con Root De MYSQL Al Momento De ... Supremoadan Bases de Datos 2 Domingo, 13 Enero 2019, 11:52 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron