CnPack 开源软件项目 - TEmbeddedWB控件Bug导致代码输入助手不能弹出的解决办法
  网站首页 下载中心 每日构建 文档中心 捐助我们 开发论坛 关于我们 致谢名单 English


 Google 搜索

内容: 
 最新下载


 
CnWizards 1.5.1.1219
[2024-11-03]

 
CnVCL 组件包 20241103
[2024-11-03]

 
CnPack 密码算法库 20241103
[2024-11-03]
  每日构建版下载
  专家包时间线
 项目相关链接


 
CnPack GitHub 首页
GIT 使用说明
申请加入 CnPack
CnPack 成员名单
 网站访问量

今日首页访问: 333
今日页面流量: 3018
全部首页访问: 5300193
全部页面流量: 21360088
建站日期: 2003-09-01

 
TEmbeddedWB控件Bug导致代码输入助手不能弹出的解决办法
 
CnPack 开源软件项目 2009-06-18 13:25:55

TEmbeddedWB控件Bug导致代码输入助手不能弹出的解决办法
作者:橙子、刘啸
2009-06-17
http://www.cnpack.org

TEmbeddedWB控件存在一个Bug,设计期被拖放到窗体上而创建实例时,会不必要地挂接全局的系统消息,并且不会将处理的消息依次再派发出去,导致CnWizards的代码输入助手无法获得编辑器中的按键消息,从而无法弹出。

躲开此问题的方法,可修改TEmbeddedWB控件源码的Create过程,使其EnableMessageHandler 过程在设计期间不调用即可。

也就是将:

constructor TEmbeddedWB.Create(Owner: TComponent);
begin
   inherited;
   {$IFDEF DELPHI_5_UP}
   EnableMessageHandler;
      {$ENDIF}
   GetDDEVariables;
      {$IFDEF DELPHI_6_UP}
      {$WARN SYMBOL_DEPRECATED OFF}
      {$ENDIF}
   DDEHWND := AllocateHWnd(DDEWndProc);
      {$IFDEF DELPHI_6_UP}
      {$WARN SYMBOL_DEPRECATED OFF}
   {$ENDIF}
  
   FAbout := 'Embedded Web Browser. ' + SITE_ADDRESS;
   FUserAgent := 'Mozilla/4.0(Compatible-EmbeddedWB' + VER_NUM + SITE_ADDRESS;
  ........ 以下代码省略
  
改为:

constructor TEmbeddedWB.Create(Owner: TComponent);
begin
   inherited;
   if not (csDesigning in ComponentState) then
   begin
   {$IFDEF DELPHI_5_UP}
   EnableMessageHandler;
      {$ENDIF}
   GetDDEVariables;
      {$IFDEF DELPHI_6_UP}
      {$WARN SYMBOL_DEPRECATED OFF}
      {$ENDIF}
   DDEHWND := AllocateHWnd(DDEWndProc);
      {$IFDEF DELPHI_6_UP}
      {$WARN SYMBOL_DEPRECATED OFF}
   {$ENDIF}
   end;
  
   FAbout := 'Embedded Web Browser. ' + SITE_ADDRESS;
   FUserAgent := 'Mozilla/4.0(Compatible-EmbeddedWB' + VER_NUM + SITE_ADDRESS;
   ......以下代码省略

然后重新编译安装TEmbeddedWB组件即可。
此修改能使CnWizards的代码助手能够正常弹出,并且程序编译后运行时由于是非设计期状态,因此也不会影响控件运行期的正常功能。



本文已阅读 14575 次
来自: CnPack 开源软件项目

上一主题 | 返回上级下一主题

相关主题:


版权所有(C) 2001-2024 CnPack 开发组 网站编写:Zhou Jinyu