jhkdiy的CSDN

我为编程狂,梦想程灵王!

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

项目信息:

开发环境: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;
}


 

阅读更多
个人分类: C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭