FormにTimerコンポ置いてタイマーのOnTimerでたとえはこんな感じの簡単なループを実行させるとき

procedure TForm1.Timer1Timer(Sender: TObject);
var
  I: integer;
begin
 Application.ProcessMessages;
 Timer1.Enabled := False;
 for I := 0 to 10 do begin
  Sleep(1000);
  Application.ProcessMessages;
  Form1.Caption := IntToStr(i);
  end;
end;

OnTimer開始時にポップアップメニュー開いてるとそのまま固まってOnTimerの処理が終わるまで操作できなくなるんだけど何故なんだろう?
ループ内でApplication.ProcessMessageしてても回避できない
開始直後さえ抜ければOnTimeでループ実行中にポップアップメニュー開いたり閉じたりは普通にできるんだけど

これ回避する方法って何かないだろうか?