PDA

Ver la Versión Completa : Capturar eventos de componentes


vichovi
13-06-2003, 15:40:42
Hola a todos:

A ver se me podeis echar una mano:

Quisiera haer un componente (descendiente del TEdit) al cual se le pudiera asignar un color cuando recibe el foco y otro cuando lo pierde.

¿Como puedo hacer para capturar el evento OnExit y OnEnter?

(Creo haber leido en el foro un post similar pero llevo toda la mañana buscando y no doy con el :confused:. Si ya ha sido respondido podriais decirme donde??)

Un saludo. Y gracias por todo.

roman
13-06-2003, 17:14:58
Puedes capturar los mensajes CM_EXIT y CM_ENTER:


type
TForm1 = class(TForm)
procedure CMEnter(var Msg: TMessage); message CM_ENTER;
procedure CMLeave(var Msg: TMessage); message CM_LEAVE;
end;

implementation

procedure TForm1.CMEnter(var Msg: TMessage);
begin
inherited;

{ tu código }

end;

procedure TForm1.CMLeave(var Msg: TMessage);
begin
inherited;

{ tu código }

end;

end.


// Saludos

vichovi
13-06-2003, 18:43:16
De lujo Roman, muchisimas gracias.

__marcsc
13-06-2003, 20:01:33
Hola,

aunque no lo he probado, también podrías intentarlo haciendo un override de los métodos dinámicos protegidos DoEnter y DoExit, definidos en la clase TWinControl o TWidgetControl (según sea VCL o CLX). La implementación te queda casi igual que la que te proponen:



type
TForm1 = class(TForm)
procedure DoEnter; override;
procedure DoExit; override;
end;

implementation

procedure TForm1.DoEnter;
begin
inherited;

{ tu código }

end;

procedure TForm1.DoExit;
begin
inherited;

{ tu código }

end;

end.



Aunqué quizás sea un poco más fácil y además sería compatible con componentes CLX, cosa que no ocurriría con la otra implementación que te proponen.

Saludos.