易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi中WebBrowser控件的bug及解决方案

  Delphi语言,无论是从开发速度、还是运行速度、还是编译速度、还是编译之后的执行文件体积,都是数一数二的。因此被作为共享软件、开发产品、制作“绿色软件”的首选。但是,由于诸多原因,Delphi中,有一些控件,存在一些bug。不论广大技术人员如何反应,Delphi官方就是“视而不见”。有问题,人家虽然不给解决,但是,总不能不用这种语言吧,毕竟优点还是大于缺点的。还是“自己动手,丰衣足食”吧。
  最近笔者在开发泛东协同管理系统客户端的时候,使用了Delphi中的WebBrowser控件,相信这个控件,是使用最广泛的控件之一,几乎所有与Internet相关的产品,都离不开这个控件。但是这Delphi中的WebBrowser控件,在使用过程中,发现三个Bug。
  1、如果打开的页面中,有通过javascript关闭页面的,只会把控件关闭,包含控件的窗口仍然存在,并且手工关闭窗口时,出现问题;
  2、打开的页面,通过鼠标选定的内容,不能复制,无论是通过右键菜单复制,还是通过Ctrl+C快捷键复制,都不可以;
  3、打开有WebBrowser控件的窗口,关闭窗口之后,内存得不到释放(此Bug在其他语言中也存在)。
  以上三个问题,是必须解决的。通过查找资料及自己的试验,终于找到了解决办法,将解决方案总结如下:
问题1解决方案:
先声明消息处理函数:
procedure   ApplicationMessage(var   Msg:   TMsg;   var   Handled:   Boolean);
在form   create时   
Application.OnMessage   :=   ApplicationMessage;
函数内容如下:
procedure   tfrmhtmlbrowser.ApplicationMessage(var   Msg:   TMsg;   var   Handled:   Boolean);  
  var  
      wb:   tembeddedwb;  
  begin  
      WB   :=   GetVisibleWebBrowser;   //取当前webbrowser控件  
      if   (Msg.message   =   WM_CLOSE)   and   (Msg.hwnd   =   Wb.Handle)   then  
      begin   
          Self.Close ();//关闭webbrowser后,把相应的窗口关闭
      end


相关文档:

XP环境下在Delphi中调试COM+组件

现在应用系统流行用B/S开发,早几年前可是C/S的天下呢,我现在做的某航空公司货运结算维护工作,其系统就是利用Delphi开发的C/S应用程序!在日常的维护工作中,难免要对已经做好的COM+组件进行调试,以查看具体的处理逻辑!本文就是介绍在WindowsXP环境下如何在Delphi中调试COM+组件!
第一步:记录下你希望调试的COM+组件 ......

Delphi 发布ActiveX控件 数字签名(转)

原作者:光明兄弟
最近我正在研究ActiveX技术。我使用Delphi 7创建了一个具有ActiveForm的ActiveX控件应用程序。这个控件产生一个.OCX文件。现在,我需要把这个控件部署在服务器端,在用户浏览网页并选择安装这个控件的时候,用户的IE才会下载、安装并显示这个控件。
但是我的控件必须作数字签名以后,IE才会下载安装。 ......

delphi 编译后出现iphist.dat 文件

 很奇怪,昨天在编译程序的时候,出现过,iphist.dat 文件。每次执行都出现,仔细查看代码,什么也没有啊!后来在网站找到原因:
 使用了IPWatch 控件的
一般产生这个文件是因为使用了indy的 TIdIPWatch 控件
该控件有个
ip历史的功能。
historyfilename指定的是保存ip历史记录的文件名,默认是iphist.Dat ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号