Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2007
luxus luxus is offline
Miembro
 
Registrado: oct 2004
Posts: 134
Poder: 20
luxus Va por buen camino
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:
Código Delphi [-]
procedure TFAnadir.Edit2KeyPress(Sender: TObject; var Key: Char);
var
  uni,precio,sub: real;
begin
  if (key=#13) then
  begin
   showmessage('key press');
   uni:=StrToFloat(FAnadir.Edit2.Text);
   precio:=StrToFloat(FAnadir.Edit3.Text);
   sub:=uni*precio;
   FAnadir.Edit5.Text:=FloatToStr(sub);
  end;
end;

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

Última edición por jhonny fecha: 16-02-2007 a las 16:56:37.
Responder Con Cita
  #2  
Antiguo 16-02-2007
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 16-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cambia:

Código Delphi [-]
if (key=#13) then

por

Código Delphi [-]
if ord(key)=13 then

Espero te sirva de algo
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 16-02-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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 !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #5  
Antiguo 16-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por gluglu
Edito : Caramba !! Tres respuestas a la vez !
Lo mejor es que cada una aporta lo propio
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 16-02-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
if Key=VK_RETURN then begin
__________________

Responder Con Cita
  #7  
Antiguo 16-02-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
no quitarias el evento por error? se quedo el codigo del procedimiento pero igual lo quitaste sin querer para que lo mande llamar
Responder Con Cita
  #8  
Antiguo 16-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por luisgutierrezb
no quitarias el evento por error?
Una vez me sucedio eso porque usaba Delphi 5 y resultaba que habia una especie de Bug que hacia que ciertos controles se desconectaran de ciertos eventos asi que opte por asignar los eventos por codigo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #9  
Antiguo 22-02-2007
luxus luxus is offline
Miembro
 
Registrado: oct 2004
Posts: 134
Poder: 20
luxus Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 22-02-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
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.
Debes usar otro evento, el Onkeyup u OnKeyDown.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #11  
Antiguo 22-02-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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 ...

Te recomiendo es ese caso, como solución infalible, que asignes un evento OnEnter a tu 'Edit2', y que en dicho evento pongas precisamente :
Código Delphi [-]
procedure TFAnadir.Edit2Enter(Sender: TObject);
begin
  Edit2.OnKeyPress := Edit2KeyPress;
end;

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.
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 22-02-2007 a las 01:18:51.
Responder Con Cita
  #12  
Antiguo 09-05-2007
nosferatu177 nosferatu177 is offline
Miembro
 
Registrado: mar 2007
Posts: 42
Poder: 0
nosferatu177 Va por buen camino
a ver si te funciona asi..

Cita:
Empezado por luxus
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:
Código Delphi [-]
procedure TFAnadir.Edit2KeyPress(Sender: TObject; var Key: Char);
var
  uni,precio,sub: real;
begin
  if (key=#13) then
  begin
   showmessage('key press');
   uni:=StrToFloat(FAnadir.Edit2.Text);
   precio:=StrToFloat(FAnadir.Edit3.Text);
   sub:=uni*precio;
   FAnadir.Edit5.Text:=FloatToStr(sub);
  end;
end;

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

Por si te ayuda en algo y si no para aquellos q les ocurra algo parecido

intentalo asi:
if key in [#13] then
begin
....
end;
Responder Con Cita
  #13  
Antiguo 11-05-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
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?

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (key=#13) then
  begin
   ShowMessage('ahora que pasa');
   Caption := 'Entro en el Enter';
   Button1.Caption := 'Entro en el enter';
  end;
end;
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #14  
Antiguo 12-05-2007
nosferatu177 nosferatu177 is offline
Miembro
 
Registrado: mar 2007
Posts: 42
Poder: 0
nosferatu177 Va por buen camino
Cita:
Empezado por Paoti
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?

Código Delphi [-]procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key=#13) then begin ShowMessage('ahora que pasa'); Caption := 'Entro en el Enter'; Button1.Caption := 'Entro en el enter'; end; end;
si; es asi: (y me funciona correctamente en delphi 7)

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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TEdit no responde a OnKeyPress salvica OOP 2 16-04-2006 10:21:08
Ejecutar un OnKeyPress sierraja OOP 5 08-10-2005 16:23:04
Evento OnKeyPress papulo Varios 3 30-08-2005 13:37:04
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48
Evente OnKeyPress bbjb OOP 8 24-05-2004 18:17:55


La franja horaria es GMT +2. Ahora son las 04:42:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi