【前言】
小弟发现 TWebBrowser (包括 BCB 的 CppWebBrowser) 的几个bug,不知道以前是否有人提过。
【bug如下】1.用Delphi或BCB添加一个WebBrowser,接着navigate到http://www.gogole.com,然后,输入几个关键字,敲回车,结果什么反映也没有,必须用鼠标点“搜索”才能进行搜索!
2.用Delphi或BCB添加一个WebBrowser,再添加一个MainMenu,设置一个主菜单,把
Caption命名为:文件(&F),再次navigate到http://www.gogole.com,然后,输入字符“F" ,结果发现无法输入字符“F",却发现主菜单“文件(F)”在闪烁!
【后记】各位大侠不知道有无方法解决这两个bug?

解决方案 »

  1.   

    问题 2 出现条件是:       coolbar + toolbar + mainmenu
    请问各位有没解决办法,请指教呀~
      

  2.   

    解决回车的问题首先:
      uses ActiveX;//引用!!
    ----------------------------------------------------------------  
      TfrmChildWeb = class(TForm)
        WebBrowser: TWebBrowser;//TwebBrowser!!!
        procedure FormCreate(Sender: TObject);//必用的一个事件…
      private
        FOleInPlaceActiveObject: IOleInPlaceActiveObject;
        procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);//自定义的一个处理……
      public
      end;
    ----------------------------------------------------------------
    过程:
    procedure TfrmChildWeb.MsgHandler(var Msg: TMsg; var Handled: Boolean);
    var
      iOIPAO: IOleInPlaceActiveObject;
      Dispatch: IDispatch;
    begin
      if WebBrowser = nil then begin
        Handled := False;
        Exit;
      end;
      Handled := (IsDialogMessage(WebBrowser.Handle, Msg) = True);  if (Handled) and (not WebBrowser.Busy) then
      begin
        if FOleInPlaceActiveObject = nil then
        begin
          Dispatch := WebBrowser.Application;
          if Dispatch <> nil then
          begin
            Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
            if iOIPAO <> nil then
              FOleInPlaceActiveObject := iOIPAO;
          end;
        end;    if FOleInPlaceActiveObject <> nil then
          if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
            ((Msg.wParam = VK_BACK) or (Msg.wParam = VK_LEFT) or (Msg.wParam = VK_RIGHT)) then
          else
            FOleInPlaceActiveObject.TranslateAccelerator(Msg);
      end;
    end;
    procedure TfrmChildWeb.FormCreate(Sender: TObject);
    begin
      Application.OnMessage := MsgHandler;
    end;
      

  3.   

    To zyly2(漂流) :
       回车的方法我已经解决了 ,你的解决方法会屏蔽掉 Ctrl+F !
       
      

  4.   

    这两个问题我都遇到了,第一次问题楼上能解决,第二个问题可能是用了suipack的缘故,如果什么控件都不用,就没有这个问题
      

  5.   

    我没有用 suipack 控件!第二个问题出现在 coolbar + toolbar + mainmenu 并且没有使用 mdichild 窗口!
      

  6.   

    我没有用 suipack 控件!第二个问题出现在 coolbar + toolbar + mainmenu 并且没有使用 mdichild 窗口!
    (也就是把 TWebBrowser 放在主窗体上)