Auf das "CanFocus" kann man sich leider nicht unbedingt verlassen.
Es gibt dann noch "visible" und "enabled" aber hilft auch nicht immer.
Doch. Kann man. Denn genau das fragt "CanFocus" nämlich ab:
Delphi-Quellcode:
function TWinControl.CanFocus: Boolean;
var
Control: TWinControl;
Form: TCustomForm;
begin
Result := False;
Form := GetParentForm(Self);
if Form <> nil then
begin
Control := Self;
while Control <> Form do
begin
if not (Control.FVisible and Control.Enabled) then Exit;
Control := Control.Parent;
end;
Result := True;
end;
end;