pb插入ole控件点击insert+control时pb应用程序自动关闭解决思路

pb插入ole控件点击insert+control时pb应用程序自动关闭解决思路
pb插入ole控件点击insert+control时pb应用程序自动关闭解决思路

pb插入ole控件点击insert control时pb应用程序自动关闭解决思路

1、问题现象:当在powerbuilder中插入OLE控件点击insert control时,应用程序自动关闭,如图

在网上查询时有人说是其他ocx(如金山,超星)冲突而导致的,毕竟现在的软件很多很多,怎么知道是那个软件冲突造成的呢?

2、原理分析

当我们点击OLE控件中的insert control时,pb会搜索那些控件可用,并且在PB 中显示出来。

PB搜索控件的位置为:注册表中的"HKEY_CLASSES_ROOT/CLSID"下的子项(为DLL、OCX文件注册信息)

搜索到保存的位置在:

"HKEY_CURRENT_USER/Software/Sybase/PowerBuilder/8.0/OLE Object Bitmaps/..."

也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID

中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。

3、实战

(一)运行注册表

(二)在注册表中找到“HKEY_CLASSES_ROOT/CLSID”并导出保存为CLSID.REG,并且用记事本打开

(三)在注册表中找到

"HKEY_CURRENT_USER/Software/Sybase/PowerBuilder/8.0/OLE Object Bitmaps/..."中的最后一个子项,比如为

“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,证明这个子项前的控件都是正确的。

(四)在用记事本打开CLSID.REG,并且搜索OLE Object Bitmaps最后一个子项比如为:“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,一直往下查找,直到提示查找不到为止,到此为止,记事本以上的控件都是正确的。然后用关键字“ToolboxBitmap32”再往下搜索,找到第一个带“ToolboxBitmap32”和“control”关键字后,如图

证明这个出问题的控件为”C:/windows/system32/aliedit/aliedit.dll”然后在命令提示符中输入

进行对出问题的控件反注册,如果提示反注册成功,打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。如果提示找不到路径,则在“HKEY_CLASSES_ROOT/CLSID”把对应的整个子项删除。一般只会有一两个控件有冲突,不用担心工作量会很大

(五)大功告成

我的电脑是xp系统,pb9.0 实验成功

WEB设计 日期时间选择器

//%%%%%%%%%%%%%%%時間選擇器%%%%%%%%%%%%% var str=""; document.writeln("

"); str+="\u65f6\u5206\u79d2
"; document.writeln(str); var_fieldname; function_SetTime(tt){ _fieldname=tt; var ttop=tt.offsetTop;//TT控件的定位点高 var thei=tt.clientHeight;//TT控件本身的高 var tleft=tt.offsetLeft;//TT控件的定位 while(tt=tt.offsetParent){ ttop+=tt.offsetTop;

JS日期控件

JS日期控件 转发评论 2008-06-11 14:19 超级简单好用的JS日期控件 效果如图所示: 用的时候先在插入 然后输入框 当鼠标放在输入框的时候,出现时间控件,选取时间后,JS自动的将时间控件的值赋给starttime2。由于给starttime2加了 runat="server"属性,所以在后台可以取starttime2的Value值。 setday.js下载 提供的setday.js默认是UTF-8编码,也就是VS的默认编码,如果你的页面声明是GB等其他编码,请用一下高级保存,转换一下编码。 setday.js代码: