Delphi DCEF4虚拟键盘未显示

Delphi DCEF4虚拟键盘未显示,delphi,chromium,delphi-xe2,virtual-keyboard,cef4delphi,Delphi,Chromium,Delphi Xe2,Virtual Keyboard,Cef4delphi,我使用的是来自美国的头孢四德非 我正在编辑PopupBrowser2示例。有铬1成分。我添加了一个事件,它应该在请求键盘时通知: procedure TForm1.Chromium1VirtualKeyboardRequested(Sender: TObject; const browser: ICefBrowser; input_mode: TCefTextInpuMode); begin caption := 'kbd'; end; 遗憾的是,当示例加载google页面时,我点击

我使用的是来自美国的头孢四德非 我正在编辑PopupBrowser2示例。有铬1成分。我添加了一个事件,它应该在请求键盘时通知:

procedure TForm1.Chromium1VirtualKeyboardRequested(Sender: TObject; const browser: ICefBrowser;
  input_mode: TCefTextInpuMode);
begin
   caption := 'kbd';
end;

遗憾的是,当示例加载google页面时,我点击搜索编辑框,事件并没有被调用。如何调用事件?

TChromium.OnVirtualKeyboardRequested是ICefRenderHandler的事件之一,该处理程序仅在屏幕外模式(OSR模式)下由浏览器使用

PopubBrowser2演示使用正常模式(也称为“窗口模式”)的浏览器,这意味着不会触发任何ICefRenderHandler事件


对于PopubBrowser2,您必须使用另一个名为GlobalCEFApp.OnFocusedNodeChanged的事件


使用HTML标记名检查node.name,该标记名应在GlobalCEFApp.OnFocusedNodeChanged内显示虚拟键盘,如“input”或“textarea”

该事件在渲染过程中执行,您必须向主浏览器进程发送进程消息以显示键盘

DOMVisitor演示向您展示了如何在需要时发送带有一些参数的流程消息:

浏览器进程将在TChromium.OnProcessMessageReceived事件中接收该消息,如下所示:


请注意,TCefProcessMessageRef是由具有名称的“New”函数创建的。当您在应用程序中实现TChromium.OnProcessMessageReceived时,您必须比较该消息。在处理该消息之前,name具有相同的name值。

我已分配了类似以下的事件
globalceApp.OnFocusedNodeChanged:=MainForm.OnFocusedNodeChanged但未调用它
Assigned(GlobalCEFApp.OnFocusedNodeChanged)
返回true。GlobalCEFApp.OnFocusedNodeChanged在“呈现”过程中执行,默认情况下Delphi调试主浏览器过程。似乎没有调用它,因为Delphi没有调试渲染过程。如果需要调试该代码,请使用单进程模式。在DPR文件中调用GlobalCEFApp.StartMainProcess之前,将GlobalCEFApp.SingleProcess设置为True。请记住,单进程模式仅用于调试目的。有关调试CEF应用程序的更多详细信息,请阅读以下内容: