关于VSFlexGrid在Win7系统上无法使用滚动条的解决历程。

来源:互联网 发布:清华大学软件学院课程 编辑:程序博客网 时间:2024/06/05 02:36

项目信息:

开发环境:WindowsXP + VC6

运行环境:WindowsXP、Widnows2003、Windows 7

皮肤套件: Xtreme ToolkitPro 2008 Vol 2 (12.1.1)

使用控件:C1 Studio for ActiveX 8.0(2004版) :使用了 C1Sizer 、C1Tab 、VSFlexGrid 8.0

数据访问:ADO(OLEDB)

 

现象:

    1:整个软件在WindowsXP、Windows2003上运行正常,Vista没测试过。

    2:公司很多的笔记本系统为Win7,有部分台式机也为Win7,软件能正常启动,VSFlexGrid表格也能正常显示,但是表格的滚动条无法滚动,只能通过在表格上按键盘的方向键来滚动数据。

 

解决历程:

    1:一开始以为是C1Sizer的问题,但经测试,发现没有使用C1Sizer的窗体也同样出现此问题,排除了。

    2:网上搜索相关问题,在Component One的论坛上发现VSFlexGrid8在win7上确实无法使用滚动条,但最新的C1 Studio for ActiveX 2011版本解决了此问题

    3:下载最新的2011版本,同时在CSDN下载频道里下载了2011版本的注册机。一开始由于没有卸载掉原来的2004版本,所以导致无法安装成功。后来也解决了。

    4:安装后建立一个对话框的工程测试,在对话框中加入VSFlexGrid的2011版本,然后在Win7上运行测试,发现能正常使用滚动条

    5:于是乎我用自己的项目软件在Win7上注册VSFlexGrid的2011版本,启动软件,发现仍然无法使用表格的滚动条,难道不是VSFlexGrid的版本问题?

    6:但我发现,明明刚刚建立用来测试的小例子就能正常滚动,为什么原来项目的就不行呢?那就是排除了VSFlexGrid的版本过旧的问题。

    7:最后发现,除了表格控件外,测试例子和项目唯一不同的地方是项目使用了皮肤套件,难道是套件问题?我把项目的皮肤(Office2007.cjstyles)加载去除后做了测试,竟然VSFlexGrid能正常在Win7上使用滚动条了,一切正常。

    8:原来是Xtreme ToolkitPro 2008 的皮肤不兼容Win7造成的,后来尝试不使用皮肤而且加载2004版本的VSFlexGrid,也能正常滚动。加载其它皮肤一律不行,证实了问题所在。

 

最后解决办法:

    判断操作系统版本(http://blog.csdn.net/jhkdiy/article/details/6913465),如果是win7则不加载皮肤,其它操作系统正常加载。

下面是加载皮肤的代码:

 

BOOL CTopdayERPApp::LoadSkinFile(){// --------------------------------------// 日期:2010/06/12 17:23:14// 作者:申志远// 动作:下列代码加载office2007的皮肤,会影响整个//   应用程序的界面。// --------------------------------------// --------------------------------------// 日期:2011/10/28 11:10:53// 作者:申志远// 动作:因为皮肤在win7下会导致VSFlexGrid无法使用滚动条,所以//       判断操作系统版本,如果是win7则不加载皮肤。// --------------------------------------if (isWin7()){return TRUE;}CString m_strStylePath;getAppPath(m_strStylePath);m_strStylePath += _T("\\Styles\\Office2007.cjstyles");// 文件存在才开启总体皮肤效果CFileFind fs;if (fs.FindFile(m_strStylePath) == FALSE){AfxMessageBox(_T("警告: 未能找到皮肤文件:\n") + m_strStylePath);}else{//XTPSkinManager()->SetApplyOptions(XTPSkinManager()->GetApplyOptions() | xtpSkinApplyMetrics);XTPSkinManager()->LoadSkin(m_strStylePath);}fs.Close();return TRUE;}


 

原创粉丝点击