第一个问题。如有需要,请帮助格式化。
语境
我在主窗体中有一个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/