Hola goduquez.
Una forma es que se me ocurre es usar el evento
OnActiveControlChange para almacenar el control que posee el foco.
Así podrías verificar de que control viene en el evento OnEnter de cada control. Para lo cuál uso un único procedimiento
ControlEnter.
El código de ejemplo:
Código Delphi
[-]
...
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
RadioButton1: TRadioButton;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure ControlEnter(Sender: TObject); private
FControl: TControl;
procedure ActiveControlChange(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange:= ActiveControlChange;
end;
procedure TForm1.ActiveControlChange(Sender: TObject);
begin
FControl:= Self.ActiveControl;
end;
procedure TForm1.ControlEnter(Sender: TObject);
begin
if Assigned(FControl) then
Caption:= 'Viene de ' + FControl.Name;
end;
...
Saludos.