关于TWebBrowser控件的焦点问题

binbin 2005-12-08 08:31:18
Delphi 5.0
使用TWebBrowser控件时发现当焦点从普通控件移动到浏览器控件时,原来的控件并不能感知焦点的失去,OnExit事件不会被触发,而且用鼠标重新点击这个失去焦点的控件时,这个控件已无法操作,只有点击了第三个控件时,OnExit事件才被触发,控件也才恢复正常.查了很多地方都没有结果,不知道大家用不用这个控件,怎么没有人提这个问题啊?
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DoorKey 2005-12-10
  • 打赏
  • 举报
回复
反正就DBGrid会有这种问题,其它的控件不会有。
还真不知道这个控件是怎么搞的。
DoorKey 2005-12-10
  • 打赏
  • 举报
回复
to binbin(破坏分子) 依照你的方法,要是有多个窗体用到WebBrowser那不是得设置好多次
Application.OnMessage了?也还是很麻烦的,要是能在WebBrowser的事件里写代码该多好。
binbin 2005-12-10
  • 打赏
  • 举报
回复
我也试了一下,发现其他的控件没有这个问题,只有dbgrid控件会有这个问题,当焦点在dbgrid中时,点击浏览器控件的滚动条,dbgrid的样子是失去焦点了,但OnExit不会触发,而且也不能再点击,就象死了一样,要点一个第三控件才能重新恢复.
binbin 2005-12-10
  • 打赏
  • 举报
回复
我该怎么给分呢?偶在BCB版的性欲已经极其低下了,难道Delphi版也是这样?:(
binbin 2005-12-10
  • 打赏
  • 举报
回复
搞定了

从网上查了一段代码,修改了一下:

procedure TfrmMain.mymessage(var msg:tmsg;var handled:boolean);//ÆÁ±ÎwebbroserÓÒ¼ü
var
thename:array [0..255] of char;
begin
getclassname(msg.hwnd,thename,255);
if thename='Internet Explorer_Server' then
begin
if (msg.message=WM_RBUTTONDOWN) or (msg.message=WM_RBUTTONDBLCLK) then
Handled:=true
else if (msg.message=WM_LBUTTONDOWN) or (msg.message=WM_LBUTTONDBLCLK) then
pnlLogo.SetFocus;//随便加一个Panel,显式设置其焦点,变相通知了DBGrid失去焦点
end;
end;



在Form的OnCreate事件中加上
Application.OnMessage:=mymessage;

binbin 2005-12-10
  • 打赏
  • 举报
回复
我从TPanel继承了一个控件,把代码封闭在这个控件里了,pnlLogo.SetFocus改成在窗口中找一个不会有焦点的panel来SetFocus,这样应该只要在主窗口中加一个控件,其他的窗口中加一个看不见的panel就解决问题.
2312 2005-12-09
  • 打赏
  • 举报
回复
我刚试了,在webbrowser1没有加载内容的时候是有从其他组件的焦点移动到webbrowser1时候OnExit事件不会被触发,当这个组件还是依然可以操作的,不过加载内容了就没有这个问题了,还有,你要实现什么?变通一下可以吗?
WebBrowserWebBrowser编程技术包括Delphi、C#、VC++、VB等编程资料的集合,其中的 实例大多以Delphi为示例讲解,Delphi7 IDE开发环境。 IE_WebBrowser编程技巧 修改WebBrowser的header信息? Delphi查看WebBrowser提交之前的数据头 用TWebBrowser组件在DELPHI中POST数据和取得网页源文件 在 WebBrowser 中直接载入流,不通过文件 判断下载网页成功 WebBrowser 失去焦点问题的解决 添加到收藏夹和整理收藏夹 使WebBrowser获得焦点 提取网页中所有链接 Web字体大小 Web命令操作 WebBrowser Navigate 中的 参数 EmptyParam Web控件不缓存网页,也不从缓存中读取 禁止WebBrowser复制 CTRL+C 在WebBrowser窗口上模拟KeyBd_Event 在使用WebBrowser控件,先要 初始化和结束程序后要终止化(Initialization & Finalization) 自定义浏览器上下文菜单 自定义浏览器 C#中调用WebBrowser查看源文件的功能 ----------------------------------- WebBrowser与MSHTML 直接在WebBrowser中写HTML字符串 在webbrowser中查找字符串并定位 把图片拷贝进剪贴板 IHTMLDocument的ExecCommand 处理事件的Internet Explorer中的DOM 禁止WebBrowser右键弹出菜单 禁止TWebBrowser图像显示 访问HTML的DOM不使用WebBrowser 如何填写空白(about:blank)页的表单 屏蔽WebBrowser的Javascript 创建运行时的IHTMLDocument而不在WebBrowser内 HOOK Webbrowser 替换WebBrowser的窗口过程 Microsoft.XMLHttp的属性和方法的简介及使用 ------------------------ IE相关的 清空IE缓存 单独删除某一URL的缓存 清空历记录 读取IE历史记录 防止脚本关闭WebBrowser 连接是否有效 InternetCheckConnection res协议可以使浏览器显示储存在资源中HTML 往IE中嵌入工具条 阻断弹出式广告的BHO 自动填表的IE面板插件 使用Delphi开发IE按钮扩展 使用Delphi开发IE右键菜单扩展 IE异步可插入协议扩展 Delphi开发IE下载扩展 创建3721样式的Google搜索扩展 HTML代码过滤技术 GetDefaultBrowser 得到的HTML代码的IE窗口 下载网址wininet ------------------------------- 注意啦,需要HTF 阅读器:http://sites.google.com/site/htfresource/home

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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