Te comento que la mayoría de mis Frames de búsqueda, tienen un comportamiento muy similar, y en la clase madre de estos frames, tengo definido un método, DoLostFocus que tiene el siguiente código:
Código Delphi
[-]
procedure TArtFrame.DoLostFocus;
Var bBool : Boolean;
begin
...
FocusLast;
SendMessage(GetParentForm(Self).Handle, WM_NEXTDLGCTL, 0, 0);
...
end;
En el método FocusLast setea el foco en el último control segun el TabOrder dentro del Frame.
Saludos!