Накидал на форму пару штук контролов и таймер в обработчике таймера пишу типа так:
- Код: Выделить всё
 procedure TForm1.Timer1Timer(Sender: TObject);
var I:Integer;
begin
  for I:=0 to ComponentCount - 1 do
    begin
      if (Components[i] is TWinControl) and
         (Components[i] as TWinControl).Focused   then
           Form1.Caption:=Components[i].Name;
            end;
end;  
Типа при тайминге в заголовке формы будем видеть какой в данный момент контрол имеет фокус ввода что то подобное можешь написать в любом обработчике:
вот для ястности привожу весь код формы:
- Код: Выделить всё
 unit Unit1; 
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ExtCtrls;
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    RadioButton1: TRadioButton;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
var
  Form1: TForm1; 
implementation
{ TForm1 }
procedure TForm1.Timer1Timer(Sender: TObject);
var I:Integer;
begin
  for I:=0 to ComponentCount - 1 do
    begin
      if (Components[i] is TWinControl) and
         (Components[i] as TWinControl).Focused   then
           Form1.Caption:=Components[i].Name;
            end;
end;
initialization
  {$I unit1.lrs}
end.