请教:工具栏按钮上的图标不能显示的问题
问题说明:
1、我所使用的一个程序是用VB6开发的,该程序主要作用是连接SQL Server并进行各类表格操作;程序在Windows XP、2003系统上使用正常;
2、最近把操作系统更换为Windows Server 2008 R2 SP1(内核与Windows 7 x64 SP1类似),安装此程序后,可以打开,界面显示正常,但是执行查询等操作时就会报错,主要是报MSADODC.OCX控件注册的问题,解决了这个问题之后,又会报MSDatGrd.ocx的错误;
3、为了省事,我找了一个网友打包的常用ocx安装包,直接安装上了,这样程序工作基本正常了,但是出现一个新问题:程序的工具栏上原先可以正常显示的图标,现在均无法显示了;
如下图所示:上图为正常显示的程序界面,下图为无法显示按钮图标的界面
补充说明:
1、以前在Windows Server 2008 R2上(非SP1),安装此程序,运行也会报错,主要是datagrid不能初始化数据绑定等一系列错误,安装上述控件包,即解决问题,但是使用了一段时间之后(大致是几个月),就出现了按钮图标无法显示的问题,我当时认为是Windows升级导致的某些dll或者ocx工作不正常所致,没有继续研究;
2、上述ocx安装包的作者有一个说明如下:
==========以下内容为转发==========
[转]使用DATAGRID控件后软件提示“cannot initialize data bindings”的解决
2007/09/26 02:28 P.M.
以前用DATAGRID控件都好好的,这次做了一个小程序后却出现这样的问题: 我用InstallShield把MSDATGRD.OCX打包进安装程序,然后在我的XP虚拟机上做安装测试,结果软件运行到加载DATAGRID控件的窗口就出错了,提示“cannot initialize data bindings”,且DATAGRID中没有数据。我知道肯定是在“Set DataGrid1.DataSource = Rs”这条代码上出错的,但代码本身绝对没有问题。然后我又在另一个XP虚拟机上测试,但在这个XP下软件运行很正常。两个XP的区别在于,前一个很干净,没有安装过任何东西,后一个则装过office和几个小工具。 现在问题明朗化了,结论就是肯定还少装了什么。但是很奇怪,难道使用DATAGRID控件,除了注册MSDATGRD.OCX外,还要别的库文件等来支持吗?于是上网查了一下,有人说还需要注册一下MSSTDFMT.DLL才可以。那么就再把它加到安装包里面,到虚拟机上测试,这下真的没问题了!原来MSSTDFMT.DLL是微软标准数据格式对象相关动态链接库文件,引用名称为“Microsoft Data Formatting Object Library”,如果在开发程序中有数据绑定,就是通过它对数据格式化后再绑定到控件的。虽然有时候程序里面没有对它进行引用,但如果用到数据绑定控件,那么就要记得把MSSTDFMT.DLL加到安装程序里面。
VB控件下载
http://4a.hep.edu.cn/ncourse/glxxxt/Mis_FunctionDemo/down_load_VB_ocx.htm
VB控件下载使用说明:
如果当你使用MIS模块演示系统中VB编制的模块不能正常运行时,且系统提示出缺少下列某些控件的话:
MSADODC.OCX、MSDATGRD.OCX
MSFLXGRD.OCX、TABCTL32.OCX、MSCHRT20.OCX
等,可以通过本页下载、安装VB运行所需要的控件,方法是将其下载到本地后先解压缩(会自动生成一个单独的目录和文件,如/VB_Ocx/setup.exe),然后再运行setup.exe程序。
VB控件安装设置程序供下载:
VB控件文件VB_Ocx.zip。
==========转发内容结束==========
3、上述ocx安装包解压之后包含3个文件:
VB_Ocx_Small 的目录
2003/07/07 10:02 9,953,822 MIS.CAB
2001/01/16 00:00 139,776 setup.exe
2003/07/08 09:50 4,235 SETUP.LST
其中MIS.CAB解压之后又包含如下文件:
1998/07/07 00:00 14,336 ADODCCHS.DLL
1999/03/08 00:00 147,728 ASYCFILT.DLL
1998/05/31 00:00 22,288 COMCAT.DLL
1998/07/07 00:00 35,328 FLXGDCHS.DLL
2000/02/15 00:00 7,832,296 MDAC_TYP.EXE
2000/05/22 00:00 118,976 MSADODC.OCX
1998/07/07 00:00 93,184 MSCH2CHS.DLL
2000/05/22 00:00 1,009,336 MSCHRT20.OCX
2000/05/22 00:00 244,416 MSFLXGRD.OCX
2000/07/15 00:00 118,784 MSSTDFMT.DLL
2000/08/21 00:00 1,388,544 msvbvm60.dll
2000/04/12 00:00 598,288 OLEAUT32.DLL
1999/03/08 00:00 164,112 OLEPRO32.DLL
2001/01/16 00:00 249,856 SETUP1.EXE
2001/01/16 00:00 73,216 ST6UNST.EXE
1998/07/07 00:00 6,144 STDFTCHS.DLL
1999/06/03 00:00 17,920 STDOLE2.TLB
1998/07/07 00:00 18,944 TABCTCHS.DLL
2000/12/06 00:00 209,608 TABCTL32.OCX
2000/10/02 00:00 102,160 VB6CHS.DLL
2001/01/16 00:00 101,888 VB6STKIT.DLL
请教VB方面的各路专家,这个问题应该如何排查和解决?非常感谢!
[解决办法]
哦,仔细看了你的问题,还是安装包的问题,有些控件可以没打全或版本不对,建议重新打包
[解决办法]
MSCOMCTL.OCX
COMCTL32.OCX
叫你的网友把这两个文件也打进包里。