RSS| 首页| 山顶道| 布珞阁¹| GoodUI| 土产| 关于

WebBrowser控件抢焦点问题的解决
2008.09.27 15:44 bruce:

一个窗口中,如果他有ie控件 axWebBrowser,当他创建了其他窗口后。webbrowser在加载完成后,将会使得此窗口激活,就会把其他窗口扔到后面去。
典型的测试是webbrowser里navigate一个自动刷新的网页
暂时没什么方法阻止webbrowser这么做

只能在主窗口的Activated和Deactivate中处理
当Activated的时候 让webbrowser的窗口 Enabled=true,Deactivate时就让webbrowser的Enabled = false;

问题可以这么解决掉。

分类  日经| 2个评论


2个评论
  1. chinawcs 留言:

    我在 delphi 里面测试了下 还是不行呀

    奇怪的是 抢焦点的问题 在有的计算机不会发生 操作系统一致
    有的就会发生
    QQ:976809488 有知道如何解决的 告诉我一声

  2. whitewolf 留言:

    经我多次测试后发现,装了IE6及IE6以下的系统中,程序中使用TWebBrowser会有一定机率抢焦点。我的解决方法是这样的:

    比如窗口上有一个TEdit控件,那么,我在它的OnExit事件中这么写的:
    var
    SelStart, SelLength: Integer;
    begin
    if (ActiveControl is TEmbeddedWB)
    or (ActiveControl is TWebBrowser) then
    begin
    SelStart := (Sender as TEdit).SelStart;
    SelLength := (Sender as TEdit).SelLength;
    (Sender as TEdit).SetFocus;
    (Sender as TEdit).SelStart := SelStart;
    (Sender as TEdit).SelLength := SelLength;
    end;
    end;

    即在控件被TWebBrowser这样的控件抢去焦点时,再抢回来。这个方法唯一的问题是,如果可输入控件过多,就很麻烦了。暂时还未找到其他办法。

垃圾太厉害了
说几句吧






*注意: 回复可能需要审查.您不必重复提交.