安装版和Win7兼容问题的解决方法
(创建时间:2010年03月07日 23:16:00)
Jangogo :
1.界面兼容问题
如 会计里面的报表-->部门项目分析表
单选框 和 复选框 会显示为 黑色,导致选择内容无法看清,这种问题在WinXP的时候也会发生,
要解决这个问题,只需要把 单选框和复选框 等这类控件放进一个 Picture控件里面 就行。
也就是说 这类控件必须 以 Picture 控件作为容器,而不能直接用Frame控件做为容器。
2. F1控件 在Win7 中载入后,关闭窗口过一段时间在重新打开同一个功能,会出现 Automation 错误(我们的软件会提示: 打不开文件,文件不存在或者被其他软件打开),归根到底是Win7 对于线程的管理模式上有所改变,
Win7在核心内部好像使用了类似JAVA平台的对象垃圾收集机制,导致调用F1的4Fang组件的部分内存被回收而导致的,因为f1是非常早期的产品,我们并不能直接修改F1或者获得f1的升级版来解决问题。
我们的解决方案必须要求我们的开发人员更改以下代码:
在4Fang的安装版的所有组件里面,如果通过 CreateObject 函数 来创建 4Fang组件的,必须改为 MyApp.CreateObject
例如以下原来4Fang组件的代码:
必须改成:
我们推荐写成以下代码,而不要使用一个缓存过渡对象o
除非你的对象o创建后,不止执行一句代码,否则我们强烈建议你使用一行语句来避免产生对象o
另外值得注意的是 :
1. 以上修改只只对4Fang安装版的有界面的组件,如果是系统自带的组件 如 ADODB.Connection 、 ADODB.Recordset 等等就千万不要用MyApp.CreateObject ,而是还是用回原来的 CreateObject 或者 New 语句来做。
2. 如果4F的Hi组件没有界面,如 HiReportData.ReportData, 用完后如果立即需要 Set Nothing回收的,都还是使用 CreateObject 来做,不要使用MyApp.CreateObject
如 会计里面的报表-->部门项目分析表
单选框 和 复选框 会显示为 黑色,导致选择内容无法看清,这种问题在WinXP的时候也会发生,
要解决这个问题,只需要把 单选框和复选框 等这类控件放进一个 Picture控件里面 就行。
也就是说 这类控件必须 以 Picture 控件作为容器,而不能直接用Frame控件做为容器。
2. F1控件 在Win7 中载入后,关闭窗口过一段时间在重新打开同一个功能,会出现 Automation 错误(我们的软件会提示: 打不开文件,文件不存在或者被其他软件打开),归根到底是Win7 对于线程的管理模式上有所改变,
Win7在核心内部好像使用了类似JAVA平台的对象垃圾收集机制,导致调用F1的4Fang组件的部分内存被回收而导致的,因为f1是非常早期的产品,我们并不能直接修改F1或者获得f1的升级版来解决问题。
我们的解决方案必须要求我们的开发人员更改以下代码:
在4Fang的安装版的所有组件里面,如果通过 CreateObject 函数 来创建 4Fang组件的,必须改为 MyApp.CreateObject
例如以下原来4Fang组件的代码:
- Dim o As Object
- Set o = CreateObject("HiReport.Report")
- o.Create MyApp, TemplateFileName, M1, M2, y, d1, d2
- Dim o As Object
- Set o = MyApp.CreateObject("HiReport.Report")
- o.Create MyApp, TemplateFileName, M1, M2, y, d1, d2
- MyApp.CreateObject("HiReport.Report").Create MyApp, TemplateFileName, M1, M2, y, d1, d2
另外值得注意的是 :
1. 以上修改只只对4Fang安装版的有界面的组件,如果是系统自带的组件 如 ADODB.Connection 、 ADODB.Recordset 等等就千万不要用MyApp.CreateObject ,而是还是用回原来的 CreateObject 或者 New 语句来做。
2. 如果4F的Hi组件没有界面,如 HiReportData.ReportData, 用完后如果立即需要 Set Nothing回收的,都还是使用 CreateObject 来做,不要使用MyApp.CreateObject
文档中心