TIdHTTPServer 的 FireMonkey Android 问题

FireMonkey Android problem with TIdHTTPServer

我有一个 FireMonkey Android 应用程序,其中包含 TTabControlTWebBrowserTIdHTTPServer

我尝试使用以下代码将 HTTP 客户端重定向到 TIdHTTPServer.OnCommandGet 事件中的新 URL:

TabControl1.ActiveTab := TabItem2;
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];

但是我得到一个错误:

Checksynchronize called from thread $c6f02970 which is NOT the main thread.

请求到达 TIdHTTPServer 组件后如何更改选项卡?

OnCommandGet 事件在工作线程的上下文中执行。您只能从主 UI 线程访问用户界面。将对 UI 控件的访问权限嵌入到对 TThread.Synchronize or TThread.Queue.

的调用中
TThread.Synchronize(nil,
  procedure
  begin
    Tabcontrol1.ActiveTab:=tabitem2;
  end);
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];