如何让TWebBrowser(DesignMode='on')可以接受Tab键﹖

Frank6600 2009-11-30 01:06:55
如何让TWebBrowser(DesignMode='on')可以接受Tab键﹖

大家都知道,按Tab键会导致焦点消失(以转到下一个taborder的控件),
可是我现在希望TWebBrowser能够接受Tab键。

我试过用Dialog的WantTab了,
没有用。

谁有其他办法﹖
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjianwen 2009-12-14
  • 打赏
  • 举报
回复
sadf
Frank6600 2009-12-01
  • 打赏
  • 举报
回复
iseekcode 的代码,我最终没用。

其实我也在 TMyWebBrowser 里放了类似的代码,
好把 KeyDown, KeyUp, KeyPress 取出来。
最终在 KeyDown 里判断 Tab 键。

这问题最终解决了,
解决办法,说穿了没什么:
既然Tab键会导致Focus消失,那再Focus一次就是了。
Frank6600 2009-11-30
  • 打赏
  • 举报
回复
这段代码有点看不太懂,
得摸索一下才能知道对或不对。
iseekcode 2009-11-30
  • 打赏
  • 举报
回复
抄了段代码,不知楼主是不是这个意思:

procedure TForm1.IEMessageHandler(var Msg: TMsg; var Handled: Boolean);
const
StdKeys = [VK_TAB, VK_RETURN]; { 标准键 }
ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { 扩展键 }
fExtended = $01000000; { 扩展键标志 }
begin
Handled := False;
with Msg do
if ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST)) and
((wParam in StdKeys) or (GetKeyState(VK_CONTROL) < 0) or
(wParam in ExtKeys) and ((lParam and fExtended) = fExtended)) then
try
if IsChild((PageControl1.ActivePage.Controls[0] as TWebBrowser).Handle, hWnd) then
{ 处理所有的浏览器相关消息 }
begin
with (PageControl1.ActivePage.Controls[0] as TWebBrowser).Application as IOleInPlaceActiveObject do
Handled := TranslateAccelerator(Msg) = S_OK;
if not Handled then
begin
Handled := True;
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
except
end;
end; // IEMessageHandler
wintergoes 2009-11-30
  • 打赏
  • 举报
回复
WebBrowser1.OleObject.document.designmode := 'on';
wintergoes 2009-11-30
  • 打赏
  • 举报
回复
WebBrowser1.OleObject.document.focus();
Frank6600 2009-11-30
  • 打赏
  • 举报
回复
呃,不知道怎么用键盘hook解决这个问题。
xjq2003 2009-11-30
  • 打赏
  • 举报
回复
顶一下,

使用键盘hook可以吗?

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧