【问题标题】:Firemonkey TWebBrowser input alternative?Firemonkey TWebBrowser 输入替代?
【发布时间】:2023-12-19 17:36:01
【问题描述】:

正如 Embarcadero 所说:

"WebBrowser 在 Android 上不接受键盘输入

在 Android 设备上,屏幕键盘在 TWebBrowser 控件中不可用。例如,这意味着用户无法填写 Web 表单。 TWebBrowser 控件应该用于显示信息或文档。 应使用 FireMonkey 控件执行用户交互。"

Link

如果我们必须使用 Dropbox 或 Google Drive 等 Clouds 识别页面,这会很烦人。

使用带有 REST 组件的 Delphi XE5,我能够打开登录页面,但键盘在 Android 上不起作用。

那么我怎样才能使用 FireMonkey 控件来执行 Embarcadero 所说的交互:用户交互应该使用 FireMonkey 控件来执行。

编辑:

Delphi XE 6 似乎是唯一不错的解决方案:

Updates to TWebBrowser:Windows 上可用的网络浏览器 (SHDocVw.TWebBrowser) 已更新到最新版本的 Internet Explorer。

【问题讨论】:

  • 它们可能意味着您可以创建自己的 (FireMonkey) 表单来收集用户输入,并在代码中创建和发送适当的 HTTP POST 请求。然后就可以在浏览器中显示响应了。
  • @TOndrej 这可能是 emba 的意图,但不是云识别的意图
  • @SirRufo 对不起,我不明白你的评论。
  • 原生开发工具的又一胜利
  • @TOndrej 云识别的目的是在不让该服务知道您的登录数据的情况下向任何服务识别您的身份。

标签: android delphi firemonkey delphi-xe5 delphi-xe6


【解决方案1】:

诀窍是将焦点放在 WebBrowser 组件上:

procedure TFormBrowserAdd.ButtonNavigateClick(Sender: TObject);
begin
  WebBrowser.CanFocus := True;
  WebBrowser.Navigate(EditUrl.Text);
  WebBrowser.SetFocus;
end;

但是,之后后退键将无法正常工作,因此您必须以其他方式进行管理。 例如,我在表单上使用了一个按钮。

【讨论】:

  • 感谢托伦蒂诺的回复。但是 TWebBrowser 在加载云识别页面时已经关注输入(电子邮件或密码)。如何将文本从按钮发送到 TWebBrowser 输入?
【解决方案2】:

您必须在加载页面结束时在网络浏览器上设置焦点

procedure TfrmMain.BrowserDidFinishLoad(ASender: TObject);
begin
Browser.CanFocus := True;
Browser.SetFocus;
end;

【讨论】: