![]() |
OnKeyPress de un TEdit
Hola tengo una pequeña duda que no sé porque ahora no me funciona.
Vamos a ver. Tengo un TEdit y en el evento OnKeyPress tengo el siguiente código fuente:
Cuando ejecuto la aplicación al introducir el nº de unidades y luego pulsar ENTER no sale nada.Es más, ni siquiera entra en el bucle con lo que no me muestra el mensaje ('key press') que he puesto como verificación. La verdad es que no sé donde está el error. A ver si con vuestra ayuda lo resuelvo. Gracias Editado por jhonny para colocar etiquetas Delphi |
para ver que esta pasando en esta sección de tu código utiliza un "breakpoint" en la sentencia que preguntas si Key=#13 y de ahi ir verificando lo que sucede
Los breakpoints logran que el compilador se detenga en un lugar especifico de tu código y te permiten evaluar las variables y comportamiento de tu programa , para utilizarlos basta con presionar F5 sobre la linea de código deseada |
|
Comprueba que el Form no tenga activada la propiedad 'KeyPreview'. Si es así, y el Form tiene algo en el evento 'OnKeyPress', te entrará siempre en el evento del Form y no del Edit en concreto.
Edito : Caramba !! Tres respuestas a la vez ! |
Cita:
|
|
no quitarias el evento por error? se quedo el codigo del procedimiento pero igual lo quitaste sin querer para que lo mande llamar
|
Cita:
|
Sigo igual
Hola a todos,
Perdón por haber contestado con retraso. He intentado todas vuestras sugerencias y sigo igual.Os comento: 1. Poniendo if Key=VK_RETURN then begin A la hora de compilar me da un error de tipos. En este evento Key es de tipo CHAR. 2. La propiedad del form "KEYPREVIEW" está a FALSE con lo que está bien...como siempre. 3. Haciendo el cambio: if ord(key)=13 no me soluciona nada. En todos estos casos NO me entra en el bucle y no reconoce la tecla INTRO. ¿Hay otras posibilidades? Gracias por vuestra ayuda de antemano |
Cita:
Saludos |
Como se ha dicho arriba, intenta utilizar un 'BreakPoint' para ver si entra siquiera en el bucle o no. Si no entra, y todo está bien asignado durante tiempo de diseño, está claro que algo debe hacer tu código que tu mismo hayas programado para provocar que no entre en ese bucle. Suele pasar que uno se le olvida por donde dejó en su momento alguna cosa perdida ... :o
Te recomiendo es ese caso, como solución infalible, que asignes un evento OnEnter a tu 'Edit2', y que en dicho evento pongas precisamente :
Opino que este debe de funcionar a la fuerza ! ;) Si es así, es que en alguna parte de tu código estás cambiado algo para que no entre de la manera que lo piensas. Espero te ayude. Edito y añado : O a lo mejor en tu código lo que estás precisamente haciendo en tiempo de ejecución es en algún lado poner a True el KeyPreview del Form. Yo lo hago en algunas ocasiones, poniéndolo y quitándolo segun me convenga. |
a ver si te funciona asi..
Cita:
Por si te ayuda en algo y si no para aquellos q les ocurra algo parecido :p intentalo asi: if key in [#13] then begin .... end; |
si funciona, lo he probado con el turbo delphi y esta funcionando.
no sé que pueda pasar. ¿tienes algo programado en los demás eventos de la caja de texto?
|
Cita:
if not (Key in ['0'..'9','.', #8, #13]) then Key := #0; //solo acepte esas teclas if key in ['.'] then //si la q se presiono es "punto" begin if (cadena<='0') or (cadena >='255') then begin mensaje('El número debe de estar entre....!'); edit1.Text:=''; edit.SetFocus; end; cadena:=''; end else begin cadena:=cadena+key; end; Espero te funcione :D |
La franja horaria es GMT +2. Ahora son las 21:14:47. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi