А вы китнте на панель например эдит и увидите что всё работает
function TCustomForm.SetFocusedControl(Control: TWinControl): Boolean;
var
FocusHandle: HWnd;
TempControl: TWinControl;
begin
.....
if not (csFocusing in Control.ControlState) then
begin
Control.ControlState := Control.ControlState + [csFocusing];
try
.....
if FFocusedControl <> Control then
begin
while (FFocusedControl <> nil) and not
FFocusedControl.ContainsControl(Control) do
begin
FocusHandle := FFocusedControl.Handle;
FFocusedControl := FFocusedControl.Parent;
if not SendFocusMessage(FocusHandle, CM_EXIT) then Exit;
end;
while FFocusedControl <> Control do
begin
TempControl := Control;
while TempControl.Parent <> FFocusedControl do
TempControl := TempControl.Parent;
FFocusedControl := TempControl;
if not SendFocusMessage(TempControl.Handle, CM_ENTER) then Exit;
end;
Повесте две панели (одна на одну) и на вторую эдит и вот такой код
procedure TForm1.Panel1Enter(Sender: TObject);
begin
caption := caption + '1';
end;
procedure TForm1.Panel2Enter(Sender: TObject);
begin
caption := caption + '2';
end;
и увидите в какой очереди поступают сообщения