如何让TWebBrowser(DesignMode='on')可以接受Tab键﹖大家都知道,按Tab键会导致焦点消失(以转到下一个taborder的控件),
可是我现在希望TWebBrowser能够接受Tab键。我试过用Dialog的WantTab了,
没有用。谁有其他办法﹖

解决方案 »

  1.   

    顶一下,使用键盘hook可以吗?
      

  2.   

    呃,不知道怎么用键盘hook解决这个问题。
      

  3.   

    WebBrowser1.OleObject.document.focus();
      

  4.   

    WebBrowser1.OleObject.document.designmode := 'on';
      

  5.   

    抄了段代码,不知楼主是不是这个意思: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
      

  6.   

    iseekcode 的代码,我最终没用。其实我也在 TMyWebBrowser 里放了类似的代码,
    好把 KeyDown, KeyUp, KeyPress 取出来。
    最终在 KeyDown 里判断 Tab 键。这问题最终解决了,
    解决办法,说穿了没什么:
    既然Tab键会导致Focus消失,那再Focus一次就是了。