sxyweiren
发表于 2018-3-21 08:48:51
KearneyKang 发表于 2018-3-20 18:11
您好! 您需要重新实例化报告对象。
这里是一个正确的代码示例:
您好,因为我们这边产品结构已经定型了。
所有的报表绑定完数据源之后,直接以Object的形式传递给一个负责打印的DLL
这个DLL主要负责打印机的选择,PreView等动作。
所以,DLL里面并没有参照所有的报表对象(100+)。
每个报表都是在自己对应的Exe或者DLL里面进行实例化的。
所有的报表的实例化都移动到打印DLL里面,或者打印DLL的动作转移到每一个报表里面都是一个庞大的改造。
所以你们提示的改造方式很难适用于我们的项目。
注:试了一下,ActiveX版的AR(2.0,3.0)是没有这个问题的。在Restart的时候,能够完成初期的动作。
KearneyKang
发表于 2018-3-21 10:07:00
您好!这是我咨询研发后给出的解决办法,他们说您提供的方法存在错误,所以才会出现行增高的情况。
sxyweiren
发表于 2018-3-21 10:28:48
KearneyKang 发表于 2018-3-21 10:07
您好!这是我咨询研发后给出的解决办法,他们说您提供的方法存在错误,所以才会出现行增高的情况。
那能不能把我的问题再次说明下。
我们这边的产品结构是这样的。.
若是按照你们研发提供的解决方法的话,我需要把打印处理分解了。
这个工作量太大了。所以我们才在Restart上面考虑能不能重新实例化或者帐票结构初始化。
KearneyKang
发表于 2018-3-21 11:59:19
好的!
我再跟研发交流下
sxyweiren
发表于 2018-3-21 14:02:21
KearneyKang 发表于 2018-3-21 11:59
好的!
我再跟研发交流下
刚才试了下,这么整能让单纯的报表实现我们需要的效果。
dim Ar2 as object = Ctype(Ar1,ICloneAble).Clone
Ar2.Run(False)
但是,这只是浅层克隆,使用的是SectionReport的Clone方法,导致克隆出来的报表的事件都丢失了。
这样的话Run函数执行的时候,具体的事件没有执行,导致输出的报表结果不正确。
有没有对Clone函数进行重写的方法?
sxyweiren
发表于 2018-3-22 09:26:26
KearneyKang 发表于 2018-3-21 17:35
这个AR没有Clone函数
有啊,虽然直接用不能用。
但是Ctype(ARobj,Icloneable)就可以克隆了。
克隆出来的确实一致了。
我们可以看到的源码方面,AR的SectionReport也引用了IconeAble的接口 。
KearneyKang
发表于 2018-3-22 16:49:24
本帖最后由 KearneyKang 于 2018-3-29 15:46 编辑
好的,我去研究下源码。