第一个问题。如有需要,请帮助格式化。

语境
我在主窗体中有一个TWebBrowser,它的行为类似于打印机。
所以我在用户在实际打印机中执行一些命令时在其中加载一些HTML文本...
我希望用户能够单击并从WebBrowser中选择文本。

问题
当用户单击WebBrowser时,从操作中注册的某些快捷方式将不再起作用。例如,有一个带有快捷方式F7的动作。如果用户单击WebBrowser并按F7,则不会调用我的快捷方式。
我知道这是WebBrowser的设计。

因此,我想:我想将每个组合键发送回表格。
问题是:如何?
如果是另一个控件,则可以在perform(WM_KeyDown,...)事件中使用OnKeyDown

替代方案或建议也将不胜感激。在过去的两天里,我非常疲倦,所以我可能会缺少一些东西。

最佳答案

使用IDocHostUIHandler的实现派生TWebBrowser或使用著名的EmbeddedWB

使用在OnTranslateAccelerator中调用的事件TranslateAccelerator实现接口

在您的brwoser实例上设置事件

像这样检测您的钥匙:

function TBrowserPageIE.DoTranslateAccelerator(const lpMsg: PMSG; const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;
begin
  result := S_FALSE;

  if lpMsg.message = WM_KEYDOWN then begin
    if lpMsg.wParam = VK_F7 then begin
      // do something here...
      result := S_OK;
    end;
  end;
end;

关于delphi - 一种将按键从TWebBrowser重定向到ParentForm的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5796029/

10-12 15:23