Delphi - KeyPress de TCustomControl

 
Vista:

KeyPress de TCustomControl

Publicado por Condor Moai (3 intervenciones) el 28/05/2005 01:45:10
Hola qué tal.

Escribí una clase que deriva de TCustomControl. Cómo han de saber, TCustomControl es descendiente de TWinControl, y éste último tiene un procedimiento protegido que se llama "KeyPress", declarado de esta forma:

protected procedure KeyPress(var Key: Char); dynamic;

que se supone es invocado cuando el componente recibe una tecla presionada por el usuario. Yo escribí un método en la clase que derivé de TCustomControl, también protegido, de esta forma:

type
TControlCreado = class(TCustomControl)
protected
KeyPress(var Key: Char); override;
end;
Y pasa que este procedimiento nunca es llamado cuando ejecuto el programa y presiono alguna tecla para probarlo.
Cabe decir que todo se compila bien, incluso está puesto en la barra de componentes (ahí donde están TButton, TImage, etc) y ya he iniciado el programa desde Delphi con F4, desde el principio del método KeyPress, y pasa lo que les digo: nunca se ejecuta esta parte.

¿Alguien sabe en qué parte me estaré equivocando?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:KeyPress de TCustomControl

Publicado por Diego Romero (636 intervenciones) el 28/05/2005 02:29:47
En el desarrollo de tu evento redefinido KeyPress has colocado inherited KeyPress(Key) para que invoque al ancestro de ese evento?.
Por ejemplo, tengo varios componentes que derivan de TWinControl, en uno de ellos tengo esto:

procedure TEditReal.KeyPress(var Key: Char);
begin
if CantDecs > 0 then ControlarReales(Key)
else ControlarEnteros(Key);
inherited KeyPress(Key); // <--- aquí llama al evento del ancestro
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:KeyPress de TCustomControl

Publicado por Condor Moai (1 intervención) el 28/05/2005 03:10:16
Me olvidé de poner el "inherited", pero no me parece que es ese el problema. Veré si es eso.
Yo estaba pensando en que el orden de llamada sería:

TWinControl.DoKeyPress
TWinControl.KeyPress
TMiControlCreado.KeyPress
Pero ahora me parece que es así:

TWinControl.DoKeyPress
TMiControlCreado.KeyPress
TWinControl.KeyPress
Bueno, le echaré un vistazo mañana. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:KeyPress de TCustomControl

Publicado por Diego Romero (636 intervenciones) el 28/05/2005 14:27:41
No, primero se llama a tu procedimiento de evento y luego al de los ancestros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar